我有点卡在这里,不知道如何前进与这一个。
我有两个型号:用户和孩子,他们是在关系。
(请记住,这只是说明问题)
class Child extends Model{
protected $primaryKey = 'id_child';
public $appends = ['is_alive'];
public function user(){
return $this->belongsTo('Models\User','id_user');
}
public function getIsAliveAttribute(){
if (!is_null($this->lifetime_updated_at))
return (Carbon::parse($this->lifetime_updated_at)->addMinute($this->lifetime) >= Carbon::now());
else
return false;
}
}
class User extends Model{
protected $primaryKey = 'id_user';
public $appends = ['is_alive'];
public function childs(){
return $this->hasMany('Models\Child','id_user');
}
public function getIsAliveAttribute(){
if (!is_null($this->lifetime_updated_at))
return (Carbon::parse($this->lifetime_updated_at)->addMinute($this->lifetime) >= Carbon::now());
else
return false;
}
}
现在我想用预先加载在控制器中检索用户,我孩子的数据。
但我的用户模型对象来自我的应用程序中的中间件。所以我只有User Model Object才能使用,我不想再用“with()”查询用户。
$user = User::where('name','DoctorWho')->first();
return user->childs()->find(3);
这是什么操作返回:
{
"id_child": 3,
"name": "JayZ",
"last_name": "Etc",
"lifetime": 1,
"lifetime_updated_at": null,
"created_at": "2017-05-29 21:40:02",
"updated_at": "2017-05-29 21:40:02",
"active": 1
}
我需要什么样的(具有属性附加)
{
"id_child": 3,
"name": "JayZ",
"last_name": "Etc",
"lifetime": 1,
"lifetime_updated_at": null,
"created_at": "2017-05-29 21:40:02",
"updated_at": "2017-05-29 21:40:02",
"active": 1,
"is_alive": true
}
甚至可以检索子数据与附加属性使用Eager加载?
说明:此用户对象来自中间件,我必须使用用户模型对象来获取其子对象的附加属性。
由于事先 LosLobos
我拼错了关系,我编辑了原始问题。 –
事情是我已经有一个用户模型对象,我不能使用“与”我只能使用用户模型来访问它的孩子。 –
@IgorMorse然后您可以在现有模型上使用'load()'而不是'with()'来懒惰地加载关系。还有'$ user-> childs() - > where('id_child',$ childId) - > first();''即使您没有急切加载关系,这也可以正常工作。急切加载只是防止N + 1查询问题。在这种情况下,它不会有任何区别。 – Sandeesh