[英]Laravel null object hasMany relationship
解決了我不應該在模型中標注我的屬性。 由於某種原因,這使它無法正常工作。
我有兩個模型的以下結構,清單和圖像。 表格圖像具有FK listing_id
,該id
引用表格清單上的id
。
我的雄辯清單模型:
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');
}
}
我雄辯的圖像模型:
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;
}
我似乎無法返回帶有圖像對象的列表-它們始終為null。 這是一個示例響應:
{id:6,名稱:“稀有商品”,值:“ 100”,itemDescr:“這是一個說明”,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。 我無法弄清楚可能出了什么問題,我幾乎嘗試了所有建議。 有任何想法嗎?
在Laravel表列中,它們的值保存在$attributes
屬性中,Laravel使用__get()
魔術方法獲取$attributes
數據。 通過在模型上將public $listing_id
定義為屬性,就像告訴Laravel:“嘿,這是listing_id
而不是持有$attributes
屬性,請改為返回它”。
定義關系時:
return $this->belongsTo('App\Models\Listing', 'listing_id', 'id');
將返回public $listing_id
屬性,該屬性的值為null
。 刪除那些公共財產定義,它應該是可行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.