我有點卡在這裏,不知道如何前進與這一個。
我有兩個型號:用戶和孩子,他們是在關係。
(請記住,這只是說明問題)
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