我有一个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');
}
}
我在数据库中播放了一个示例位置,其id
为1
。在我的控制器内,在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();
答案 0 :(得分:1)
你这样做是相反的。请尝试以下方法:
$table = new Table;
$location = Location::findOrFail(1);
$location->table()->associate($table);
$location->save();
您真正需要做的是将实例的外键与新对象相关联,外键位于Location
模型中。