В моем проекте я использую модель App \ User. php по умолчанию, например:
namespace App;
class User extends Authenticatable
{
public function comments()
{
return $this->hasMany('App\Comment', 'user_id', 'id');
}
}
Я создал пакет "магазин" и хочу расширить модель User. Например:
namespace Pixiebox\Shop;
use Illuminate\Database\Eloquent\Model;
class Cart extends Authenticatable
{
public function posts()
{
return $this->belongsToMany('App\Post', 'cart_posts', 'cart_id', 'post_id')->withPivot(['listtype', 'qty']);
}
}
Pixiebox \ Shop \ src \ Shop \ User. php
namespace Pixiebox\Shop;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
public function cart()
{
return $this->hasOne('Pixiebox\Shop\Cart', 'user_id', 'id');
}
}
Если я сделаю
$wishlist = \Auth::user()->cart()->with(['posts' => function($subquery){
return $subquery->wherePivot('listtype', 'wishlist');
}])->first();
, то вернется «Вызов к неопределенному методу App \ User :: cart () ". Поскольку это необязательный пакет, я не хочу помещать методы в \ App \ User. php, а в тот пакет, к которому он принадлежит. Есть ли другой путь?