我有 2 個模型,用戶和部門。這兩者之間有著多對多的關(guān)系。當(dāng)我嘗試在 Model 類中將字段與toArray()方法相關(guān)聯(lián)時,出現(xiàn)最大堆棧深度超出錯誤。部門型號 :class Department extends Model{ public function users() { return $this->belongsToMany(User::class); } public function toArray() { $arr = parent::toArray(); $arr['users'] = $this->users; return $arr; }}用戶模型:class User extends Model{ public function departments() { return $this->belongsToMany(Department::class); } public function toArray() { $arr = parent::toArray(); $arr['departments'] = $this->departments; return $arr; }}擁有這種 JSON 輸出的正確方法是什么?/api/部門:{ "success": true, "data": [ { "id": 1, "caption": "asd", "status": "active", "users": [] } ]}/api/用戶:{ "success": true, "data": [ { "id": 1, "username": "asdasd", "email": "m@m.m", "status": "active", "departments": [] } ]}
2 回答

慕容708150
TA貢獻1831條經(jīng)驗 獲得超4個贊
這對我有用:
public function with($id, $relations, $columns = ['*'])
{
$query = $this->model->newQuery();
$query = $query->with($relations);
return $query->find($id, $columns);
}

互換的青春
TA貢獻1797條經(jīng)驗 獲得超6個贊
在做你正在做的事情時,你基本上要創(chuàng)建一個可以無限期運行的數(shù)組。
首先,toArray()從兩個模型中刪除方法,實際上幾乎沒有理由覆蓋此方法。
為了實現(xiàn)您想要的,您可以在需要時使用with()簡單地加載關(guān)系,例如
public function show($id)
{
return User::with('departments')->findOrFail($id);
}
如果您正在使用路由模型綁定或者您剛剛檢索了模型,您可以使用load()(延遲預(yù)加載)代替:
public function show(User $user)
{
$user->load('departments');
return $user;
}
- 2 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報
0/150
提交
取消