2015-07-03 42 views
0

不當推理根據Laravel 5文檔,Laravel 5的外鍵

雄辯會自動確定 的評價模型正確的外鍵列。按照慣例,雄辯將採用擁有模型的「蛇案」 名稱並將其後綴爲_id。因此,對於此示例, Eloquent將假定Comment模型上的外鍵是post_id。

然而,這是不是在現實的情況下,因爲如果一個人有:

// Class: Video 
public function author() 
{ 
    return $this->belongsTo('App\User'); 
} 

然後調用$ video->筆者就不行,因爲Laravel將承擔外鍵被AUTHOR_ID而不是user_id。

我錯過了什麼,或者這確實是一個文檔錯誤?

回答

1

您正在發表的文章hasMany,而不是belongsTo

對於belongsTo,它將在視頻中查找user_id,並在用戶模型上與id相匹配。對於hasMany,它將在Video中查找id,並將其與用戶中的video_id相匹配,這在此情況下沒有意義。

belongsTohasMany的反轉版本。

編輯:是的。對不起,你似乎是對的。當我將關係函數的名稱更改爲user而不是author時,它可以工作。

輕鬆繞過它的唯一方法是將user_id作爲外鍵傳遞。

// Video 
public function author() 
{ 
    return $this->belongsTo('App\User', 'user_id'); 
} 

然而,belongsTo文檔確實狀態(您發佈hasMany):

口才通過檢查的關係,方法的名稱,後面添加的方法名確定默認外鍵名與_id。然而,如果在手機型號外鍵不user_id說明,您可以通過自定義鍵名作爲第二個參數屬於關聯方法

正如我在原來的答覆說,你看不正確的部分的文件。

+0

你不是在回答我的問題。試試我給你的例子,看看belongsTo關係,它不會在視頻中尋找user_id,而是尋找author_id。 – Slavic

+0

它不能查找'author_id',除非你有一個Author模型,將模型中的$ primaryKey改成'author_id'或者你在關係函數中手動傳遞它,但是在你發佈的例子中你沒有。無論哪種方式,那麼你的問題是不完整的。 –

+0

您是否嘗試按照陳述重現我的場景?不需要$ primaryKey或其他參數。只是在問題中給出了什麼。 – Slavic