belongsTo(City::class); } public function company(): BelongsTo { return $this->belongsTo(Company::class); } public function items(): BelongsToMany { return $this->belongsToMany(Item::class, 'carts_items', 'cart_id', 'item_id'); } public function isEmpty() { return $this->items()->isEmpty(); } public function setCity(City $city) { if($this->city_id == $city->id) return; $this->city_id = $city->id; if(!$this->isEmpty()) $this->dropItems(); $this->save(); } public function addItem(BigInteger $item) { $this->items()->sync($item); } public function addItems(array $items) { $this->items()->sync($items); } public function removeItem(BigInteger $item) { $this->items()->sync($item); } public function removeItems(array $items) { $this->items()->sync($items); } public function dropItems() { $this->items()->detach(); } }