已经解决了我不应该在模型中调出我的属性。出于某种原因,这使它无法工作。
我有以下两个模型的结构,列表和图像。表格图像的FK listing_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:"这是一个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,用于此特定项目。我无法弄清楚可能出现的问题,我已经尝试了几乎所有的建议。有什么想法吗?
答案 0 :(得分:1)
在Laravel表格列及其值保存在$attributes
属性中,Laravel使用__get()
魔术方法获取$attributes
数据。通过在模型中将public $listing_id
定义为属性,它就像告诉Laravel一样:"嘿,这是listing_id
,而不是保留$attributes
属性的那个,所以请改为返回#34 ;
定义关系时:
return $this->belongsTo('App\Models\Listing', 'listing_id', 'id');
将返回public $listing_id
属性,其值为null
。删除那些公共属性定义,它应该是有效的。