表没有创建一个关系

时间:2016-12-04 04:31:22

标签: laravel-5.3

我有一个tables表,模型定义如下:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Table extends Model
{
    public function location()
    {
        return $this->hasOne('App\Location');
    }
}

我有一个locations表,其中table_id列,并且模型定义如下:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Location extends Model
{
    public function table()
    {
        return $this->belongsTo('App\Table');
    }
}

我在数据库中播放了一个示例位置,其id1。在我的控制器内,在DB::transaction块内,我运行以下代码:

$table = new Table;
$location = Location::findOrFail(1);
$table->location()->save($location);
$table->saveOrFail();

此代码运行时没有错误,但是,当我查看数据库时,我所在位置的table_id列仍为空。我做错了什么?

我也试过以下,但无济于事:

$table = new Table;
$location = Location::findOrFail(1);
$table->saveOrFail();
$location->table()->associate($table);

只有以下似乎有效:

$table = new Table;
$table->save();
$location = Location::findOrFail(1);
$location->table_id = $table->id;
$location->save();

1 个答案:

答案 0 :(得分:1)

你这样做是相反的。请尝试以下方法:

$table = new Table;
$location = Location::findOrFail(1);
$location->table()->associate($table);
$location->save();

您真正需要做的是将实例的外键与新对象相关联,外键位于Location模型中。

相关问题