2013-01-11 62 views
5

我想爲一個項目創建一些註釋模型,但是我找不到任何創建註釋移植腳本的參考,我只在vimeo上找到此視頻:Laravel 4 - Eloquent Collections & Polymorphic RelationsLaravel Schema是否管理開箱即用的多態關聯?

我應該明確添加多態列嗎?

Schema::create('comments',function($table){ 
    $table->increments('id'); 
    $table->text('body'); 
    $table->string('commentable_type'); 
    $table->integer('commentable_id'); 
    $table->timestamps(); 
}); 

問題之際,製造商做預期時,關鍵是一個外鍵在$table->foreign('user_id')->references('id')->on('users');

回答

0

多態連接是無關的模式,他們是雄辯的功能,它允許關係要構建的程序員在任何其他類型的模型之間。

您可以檢查此文件:

http://four.laravel.com/docs/eloquent#relationships

+2

我知道Schema和Eloquent是不同的概念。我想知道是否有添加多態列的快捷方式,就像'$ table-> timestamps()'。我認爲這意味着混合邏輯與存儲。 –

+0

對。我沒有光顧,只是強化了他們沒有聯繫的事實。 –

+0

Schema表示「這裏是領域」。雄辯模型然後說「使用這些領域」。 –

6

Laravel〜4.1已經做到這一點的方法:

$table->morphs('itemable'); 

創建:

itemable_id 
itemable_type 
table_name_itemable_id_itemable_type_index 

第二個可選參數是索引太長時的替換索引名稱。簽名是:

public function morphs($name, $indexName = null); 
+0

謝謝你,這個項目是一個概念證明,模型和關係會瘋狂地實現沒有這個,並被抓到:( –

+0

對不起,聽到這一點。你可以總是實現多態Laravel只需指定一個字符串列「something_type」和一個無符號(遞增)整數列「something_id」即可。 – andrewhl