[英]Laravel accessing properties through pivot table
我正在嘗試創建一個應用程序,其中用戶可以具有數量可變的配置文件字段以及數據。 因此,站點管理員可以將例如location
添加到字段列表中,然后所有在模型中具有location
用戶。
這是我的數據庫
Table : users
Columns: id | name | email
Sample : 1 | Adam | example@example.com
Table : user_custom_field
Columns: id | slug | name
Sample : 1 | location | Location
Table : user_custom_data
Columns: id | user_id | field_id | data
Sample : 1 | 1 | 1 | United Kingdom
我已經嘗試過對hasMany進行后期處理之類的事情,但是只能使其工作1個結果,而不能使它對所有用戶有效。
理想情況下,我想訪問一個自定義字段,例如location
:
$user->location
要么
$user->custom->location
到目前為止,這是我無法使用的模型...
public function custom()
{
$custom_data = $this->hasMany('App\User_Custom_Data', 'user_id', 'id')
->join('user_custom_field', 'user_custom_data.field_id', '=', 'user_custom_field.id');
return $custom_data;
}
我在這里走錯了路嗎?
我相信,這里唯一的問題是表和Eloquent模型的命名。 因為您有非常特定的表名,所以我建議在所有這些模型中聲明表:
$ table =“ table_name”; http://laravel.com/docs/5.0/eloquent#basic-usage
如果您這樣做,那么Eloquent將為您提供很多可用的服務。 我可能不是100%,因為目前不確定您的名字,但是,您的User.php(用戶雄辯模型)可以使用以下方法:
public function customAttributes()
{
return $this->hasMany('App\User_Custom_Data');
}
**不要忘記在模型User_Custom_Data.php中需要添加
protected $table = "user_custom_data";
如果您如上所述,則無需指定用於關系的whihc列。
另外,請注意,類和對象的命名最佳做法是PascalCase(每個新單詞,包括第一個單詞,都帶有大寫字母的第一個字母-不帶下划線)
祝好運 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.