SOLVED Я не должен был вызывать свои атрибуты в моделях. По какой-то причине это препятствовало работе.Laravel нулевой объект hasMany relationship
У меня есть следующая структура двух моделей: листинг и изображение. Изображения стола имеют FK listing_id
, что соответствует id
на таблице.
Мои Eloquent модель листинга:
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Model;
class Listing extends Model {
protected $table = 'listings';
protected $connection = 'mysql';
public $id;
public $name;
public $value;
public $itemDescr;
public $user_id;
public $category_id;
protected $fillable = [
'id',
'name',
'value',
'itemDescr',
'user_id',
'category_id'
];
/**
* Return images
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function images()
{
return $this->hasMany('App\Models\Image');
}
}
Мой Eloquent модель изображения:
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Model;
class Image extends Model
{
protected $table = 'images';
protected $connection = 'mysql';
public $id;
public $imageType;
public $title;
public $filename;
public $path;
public $author_id;
public $listing_id;
public $user_id;
public $size;
public $width;
public $height;
protected $fillable = [
'imageType',
'title',
'filename',
'path',
'author_id',
'listing_id',
'user_id',
'size',
'width',
'height'
];
/**
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function listings()
{
return $this->belongsTo('App\Models\Listing', 'listing_id');
}
}
Мой контроллер:
/**
* Return the full list of listings
*
* @param Request $request
*
* @return string
*/
public function itemList(Request $request)
{
$listings = Listing::with('images')->get();
return $listings;
}
Я не могу вернуть мое объявление с изображением объекты - они всегда равны нулю. Вот пример ответа:
{ID: 6, название: "редкий предмет список", значение: "100", itemDescr: "это DESCR", user_id: 1, category_id: 6, created_at : "2016-05-30 13:47:33", updated_at: "2016-05-30 13:47:33", изображения: []}
в базе данных показывает два изображения с listing_id 6 для этого конкретного элемента. Я не могу понять, что может быть не так, я пробовал почти все предложения. Есть идеи?
Это глупый вопрос, но ваша модель на App/Models? Ваш код выглядит нормально! Он должен работать ... – Laerte
@ Laerte да. Я бросил sql в его работу, и я думаю, что мой список index.id идет в нулевом выражении, что меня озадачивает. – caro
Я думаю, что ваши отношения обратные. Вы говорите, что есть два изображения с идентификатором листинга 6. Это означает, что списки могут иметь много изображений. – user3158900