2014-03-04 31 views
1

我想在教程中創建一對多的關係。沒有實際外鍵的一對多關係

~~~ 一對多

一個一對多的關係的一個例子是博客文章說,「有很多個」徵求意見。我們可以在這個關係模型像這樣:

class Post extends Eloquent { 

    public function comments() 
    { 
     return $this->hasMany('Comment'); 
    } 

} 

~~~

所以我想打一個型號後(連接到餐桌「的帖子」)和模型註釋(連接到餐桌「意見」) 。我在phpMyAdmin中創建表,而不是在遷移(因爲我在在線服務器上沒有SSH支持)。評論表有一個'posts_id'列。

我可以使用...

$comments = Post::find(1)->comments; 

..無定義在phpMyAdmin的兩個表之間的外鍵關係?

如果答案是YES。

我應該在我的'評論'表中做一個列名「post_id」或類似的東西或這個工作?就像你會用普通的外鍵一樣?

+0

爲什麼你想避免定義一個外鍵關係?設置起來可能會很棘手,但它可以保證您的表格結構正確並保持正確。它將防止不引用任何帖子的'孤兒'評論...並防止移動/刪除帖子時出現問題。 –

回答

1

您不必在MySQL端顯式聲明外鍵,但您至少需要創建一個post_id列,Laravel將其用作外鍵。

當然,你可以根據需要命名此列,並在相關的聲明指定:

class Post extends Eloquent { 

    public function comments() 
    { 
     return $this->hasMany('Comment', 'post_primary_key'); 
    } 

} 

還可以聲明此列在phpMyAdmin的外鍵提高數據庫的穩健性但這不是Laravel的業務。

相關問題