Laravel 5 Eloquent belongsTo()外键不起作用

时间:2015-06-10 16:04:04

标签: model eloquent laravel-5 belongs-to

我发现Schema :: create()中列的命名会影响创建约束,因此Model在以后的查询中无法找到它。

Schema(simplefied):

Schema::create('page_elements', function(Blueprint $table)
{
    $table->increments('id');
    $table->integer('page_element_type_id')->unsigned();
    $table->foreign('page_element_type_id')->references('id')->on('page_element_types')->onUpdate('cascade')->onDelete('restrict');
    $table->timestamps();
});

当我打电话

PageElement::find(1)->first()->type()->get()

我得到空集。

在Shema中更改这2行后(仅将page_element_type_id更改为type_id):

$table->integer('type_id')->unsigned();
$table->foreign('type_id')->references('id')->on('page_element_types')->onUpdate('cascade')->onDelete('restrict');

我在集合中得到了1个元素,就像它应该的那样。

任何人都知道是否存在一些命名问题或规则,关于带有约束的列?

EDID: 模型中的type()声明,如要求:

public function type()
{
    return $this->belongsTo('App\PageElementType');
}

1 个答案:

答案 0 :(得分:3)

你能展示你的type功能吗?

我敢打赌你没有使用第二个参数来设置具有外键的列的名称,因此将其更改为:

return $this->belongsTo('App\YourModel', 'page_element_type_id');