我正在尝试为我的模型添加一个值,但它没有被添加。我做错了吗?
以下是我的定义:
protected $appends = ['hash'];
public function getHashAttribute(){
return 'test';
}
public function scopeGetDeveloperGames($query, $userid){
return $query
->join('game_info', 'games.game_id', '=', 'game_info.game_id')
->where('games.user_id', $userid)
->orderBy('games.created_at', 'desc')->limit(9);
}
当我进行转储时,结果中没有显示的是对模型的调用:
$items = GamesModel::select('title', 'games.user_id', 'games.game_id', 'games.created_at', 'icon_large', 'icon_medium', 'icon_small', 'short_description')
->GetDeveloperGames($userid)
->get();
dd($items);
答案 0 :(得分:8)
来自文档
将属性添加到追加列表后,它将包含在模型的数组和JSON表单中。 appends数组中的属性也将遵循模型上配置的可见和隐藏设置。
如果你使用toArray()或toJson():
$items = GamesModel::select('title', 'games.user_id', 'games.game_id', 'games.created_at', 'icon_large', 'icon_medium', 'icon_small', 'short_description')
->GetDeveloperGames($userid)
->get()
->toArray();
它将可见。
答案 1 :(得分:1)
我遇到的另一个稍微不同但相似的问题是使用with()
方法。
我有Event::with(['event_types:id,name,url'])
,其中的URL由getUrlAttribute()
模型中的EventType
定义。但这没有用,因为我的语法event_types:id,name,url
试图加载不兼容的特定列。
为解决此问题,我删除了此语法,只是做了Event::with(['event_types'])
,它按预期加载了所有内容。
答案 2 :(得分:0)
这是供将来使用,以防其他人通过Google遇到类似(不完全)问题的访问:
我有类似的问题,原来我没有正确使用Eloquent,我在模型中附加了EventyTypes,但是我正在使用$eventTypes = DB::table('event_types')->get()
获取数据。这是不正确的。然后,我将其修改为$eventTypes = EventTypes::get();
并成功了。这是有道理的,因为附加项位于模型中,您应该从模型而不是使用DB获取数据。