2017-04-03 98 views
0

我是Stack Overflow和Laravel的新手。與3張桌面的雄辯關係

我嘗試在Laravel中開發一個變量輪廓系統,並且我得到了3個表('User','User_Fields','Fields')。

Fields表的結構如下: Fields

user_fields表的結構如下: user_fields

User表是來了與Laravel 5

標準表現在我想從user_fields獲取所有字段,具體取決於選擇或登錄哪個user。如果user_field不存在,模型應返回null或爲user_field創建新記錄。

我嘗試了很多像「(hasManyThrough,belongsToMany)」這樣的口號出現的「解決方案」,但是我沒有得到我想要的結果。

有沒有關係方法的解決方案?

感謝您的幫助,我的英語不好對不起:/

+2

歡迎SO,那你試過嗎? – hassan

+0

我有字段表(在這個表中是所有配置文件字段聲明)和user_fields表(該表包含的值,是真實的user_id和field_id)現在我嘗試從字段表中檢索所有配置文件字段與來自user_fields表的值,但如果相關的user_field不存在,它應該返回** null **。你懂我的意思嗎? –

回答

0

你應該使用belongsToMany()->withPivot()retrieve the intermediate table columns。你user_fields是您的數據透視表等你的用戶模型,你應該有:

class User extends Model 
{ 
    public function fields() 
    { 
     return $this->belongsToMany(Field::class, 'user_fields')->withPivot('value'); 
    } 
} 

然後你就可以訪問你的價值觀爲用戶:

$user = User::find($id); 
foreach($user->fields as $field) { 
    $field->pivot->value; 
} 
+0

例如我有字段:名字,姓氏,地址,郵政編碼,城市和我的fields_table中的國家,但在我的user_fields表中只存在firstname-> john和lastname-> doe。在這一點上,你的解決方案工作正常,但我想回顧其餘的fields_table像地址,郵政編碼等,這是從user_fields沒有價值..非常感謝你的幫助:) –