2016-02-29 81 views
0

我目前正在學習與Laravel的發展,我遇到了一個小問題。我想有兩個ModelsUsersAddresses在哪裏把hasOne和外鍵在Laravel

用戶有一個Address,所以我必須把foreign keyaddressuser表吧?但根據Laravel documentationAddress表具有user foreign key

Eloquent根據型號名稱假定關係的外鍵。在這種情況下,手機型號會自動假定有一個user_id外鍵。如果您希望覆蓋這個約定,你可以傳遞第二個參數hasOne方法:

我應該如何工作有foreign keyUser表,而不是在Address表(這是方式更多的邏輯我的想法)。謝謝!

回答

1

在地址表中使用user_id字段更正確。但是,如果你想這樣做,這樣一來,使用belongsTo關係來代替:

class User { 

    public function address(){ 

     return $this->belongsTo('App\Address'); 

    } 

} 

你可以從這個是不對的語言看 - 用戶應該有一個地址,一個地址應該屬於一個用戶。但是如果你喜歡這種方式,這段代碼就可以工作。

+0

我想這樣做,因爲我的地址實體將用於一個「事件」實體,它也將有一個地址。 – Sakuto

1

您可以在用戶模型中放入地址查詢。

public function address(){ 

    return $this-> hasOne(\App\Address::class); 

} 

然後可以調用,如:

{{$this->user->address()}} 

您的地址表中塞恩做出了一個名爲users_id對上述使用領域。

+0

'belongsTo'不使用數據透視表 – Jeff

+0

謝謝我的錯誤... –