Laravel 5。复合主键。 'where clause' 中的未知列 'id'
Laravel 5. Composite primary key. Unknown column 'id' in 'where clause'
我不使用数据库中的 'id' 列。
相反,我使用复合主键 user_id + tmdb_id.
如果我像这样添加新记录:
$movie = new Movie();
$movie->user_id = 1;
$movie->tmdb_id = 2;
$movie->ratio = 3;
$movie->save();
它工作正常!
但是,如果我尝试像这样编辑现有记录:
$movie = Movie::where([
'user_id' => 1,
'tmdb_id' => 2,
])->first();
$movie->ratio = 4;
$movie->save();
然后我有错误:
Unknown column 'id' in 'where clause'.
迁移文件如下所示:
public function up()
{
Schema::create('movies', function (Blueprint $table) {
$table->integer('user_id')->unsigned();
$table->integer('tmdb_id')->unsigned();
$table->tinyInteger('ratio');
// composite primary key
$table->primary(['user_id', 'tmdb_id']);
});
}
Laravel 不支持复合主键。
您必须使用额外的软件包,例如 https://github.com/mpociot/laravel-composite-key。
我不使用数据库中的 'id' 列。
相反,我使用复合主键 user_id + tmdb_id.
如果我像这样添加新记录:
$movie = new Movie();
$movie->user_id = 1;
$movie->tmdb_id = 2;
$movie->ratio = 3;
$movie->save();
它工作正常!
但是,如果我尝试像这样编辑现有记录:
$movie = Movie::where([
'user_id' => 1,
'tmdb_id' => 2,
])->first();
$movie->ratio = 4;
$movie->save();
然后我有错误:
Unknown column 'id' in 'where clause'.
迁移文件如下所示:
public function up()
{
Schema::create('movies', function (Blueprint $table) {
$table->integer('user_id')->unsigned();
$table->integer('tmdb_id')->unsigned();
$table->tinyInteger('ratio');
// composite primary key
$table->primary(['user_id', 'tmdb_id']);
});
}
Laravel 不支持复合主键。
您必须使用额外的软件包,例如 https://github.com/mpociot/laravel-composite-key。