morphTo и помощью методов hasmany что Laravel
быстрый запрос относительно некоторых отношений модели данных в Laravel.
у меня есть продукт, который принадлежит к пользователя, но пользователь может иметь много продуктов. Но продукт также может иметь много людей, делающих предложение по этому продукту так;
class Product extends Model
{
public function user(){
return $this->belongsTo('AppUser');
}
public function offer(){
return $this->hasMany('AppOffer');
}
но продукт также может иметь различные подтипы продукта, например, один может быть транспортным средством или мобильным телефоном, каждый с разными столбцами в моей миграции, поэтому я предполагаю, что мне нужно морфинг много
In Product.php
public function imageable()
{
return $this->morphTo();
}
на Vehicle.php
public function products()
{
return $this->morphMany('AppProduct', 'imageable');
}
однако, при вызове:
$product = Product::findOrFail($id);
Я получаю null, когда я пытаюсь сделать что-то вроде $product->vehicle
Я добавить ID машины в базе данных на imageable_id
на столе продуктов, и imageable
тип к "кораблю" на таблице продуктов тоже.
что я здесь делаю не так?
1 ответов
все выглядит правильно, вы просто должны получить доступ к нему через imageable
:
$product = Product::findOrFail($id);
return $product->imageable;
С фреймворк Laravel документация:
вы также можете получить владельца полиморфного отношения из полиморфная модель путем доступа к имени метода, который выполняет призыв к morphTo.
в вашем случае метод, который выполняет вызов morphTo
- Это печати.