我有兩種模型,即通過一對一關係關聯的模板和狀態。國家所屬的模板,Laravel一對一關係不相關
一個外鍵使用以下遷移創建:
public function up()
{
Schema::table(
'templates',
function (Blueprint $table) {
$table->dropColumn('state');
$table->integer('state_id')->unsigned()->index()->nullable();
$table->foreign('state_id')->references('id')->on('template_states');
}
);
}
然後,模板模型類狀態字段定義爲一個hasOne關係:
public function state()
{
return $this->hasOne('TemplateState', 'id', 'state_id');
}
而TemplateState模型類定義的逆位屬於:
public function template()
{
return $this->belongsTo('Template');
}
我很難將狀態與在DB中創建的模板關聯起來。看看下面的修補匠:
[1] > $t = Template::find(1);
// object(Template)(
// 'incrementing' => true,
// 'timestamps' => true,
// 'exists' => true
//)
[2] > $t->alias;
// 'travel_journal'
[3] > $s = TemplateState::find(1);
// object(TemplateState)(
// 'incrementing' => true,
// 'timestamps' => true,
// 'exists' => true
//)
[4] > $s->state;
// 'pending'
[5] > $t->state()->save($s);
// object(TemplateState)(
// 'incrementing' => true,
// 'timestamps' => true,
// 'exists' => true
//)
[6] > $t->state->state;
在步驟[6]鼓搗,調用$ T->國有>狀態,我可以看到有沒有與這兩個模型方面的關聯,並期待在數據庫,模板的state_id仍然爲空。
我無法弄清楚我做錯了什麼,任何人都可以請幫忙!
我在理解你在說我應該讓Template屬於TemplateState,所以反過來我現在有什麼? –
是的,'hasOne' /'hasMany'需要另一個表上的外鍵,與'belongsTo'相對。 –