5
考慮以下表獲得域:Laravel:belongsToMany()不會在許多一對多表
user
id
name
client
id
name
user_client
user_id
client_id
rate
...
我希望我的控制器到達各個領域的user
表,我也想列出之後他們的客戶name
和rate
。用戶和客戶端型號:
class User extends Eloquent {
public function clients()
{
return $this->belongsToMany('Client', 'user_client');
}
}
class Client extends Eloquent {
public function users()
{
return $this->belongsToMany('User', 'user_client');
}
}
user_client
沒有型號。
public function show($username) // foo.com/user/{$username}
{
$user = User::where('username', '=', $username)->firstOrFail();
$clients = User::find($user->id)->clients;
return View::make('users.show', compact('user', 'clients'));
}
提取物雖然這運行正常,讓我們來看看在視圖users/show.blade.php
:
<h1>{{$user->name}}</h1>
@foreach($clients as $client)
<p>{{$client->name}}, {{$client->rate}}</p>
@endforeach
$client->rate
是不確定的。檢查我的查詢調試器,belongsToMany將只選擇client.*
,但它不會選擇除user_id
和client_id
之外的其他任何內容。
如何修改User::find($user->id)->clients;
以便它也會選擇user_client.*
?
編輯:雖然我在它,任何改進建議也歡迎。
哇,這相當不錯,尤其是熱切的加載。查看文檔,但我將如何使用公共函數newPivot(Model $ parent,array $ attributes,$ table,$ exists) \t { \t \t返回新的UserClient($ parent,$ attributes,$ table,$ exists) ; \t}'在這種情況下?我添加了一個'BaseModel'來擴展Eloquent,但是我很難理解這個概念。 – tiffanyhwang
我可以建議你在論壇或IRC中採取這一做法嗎?不確定你想要達到什麼目的? :) – Cristian
感謝' - > pivot->'提示。 – Pathros