【发布时间】:2021-08-02 13:57:31
【问题描述】:
我有这个模型:
class User extends Authenticatable
{
protected $fillable = [
'email',
'password',
'role_id',
];
.........
public function language() {
return $this->hasOne(Language::class, 'language_id');
}
}
和语言模型:
class Language extends Model
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'iso'
];
/**
* @return BelongsTo
*/
public function user()
{
return $this->belongsTo(User::class);
}
现在当我尝试保存用户时:
$newUser->language()->save(Language::find($input['language']));
我得到错误:
Column not found: 1054 Unknown column 'language_id' in 'field list' (SQL: update `languages` set `language_id` = 4, `languages`.`updated_at` = 2021-08-02 13:51:32 where `id` = 1)"
用户迁移:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->integer('role_id')->default(UserRoles::TRANSLATOR);
$table->integer('language_id')->references('id')->on('languages')->nullable();
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
}
语言迁移:
public function up()
{
Schema::create('languages', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('name');
$table->string('iso')->unique();
});
}
我确认我在users 表中有语言ID,而language 表中没有user_id,因为我只想在表中保留语言ID。接下来我可以尝试什么?
【问题讨论】:
-
你能发布两个模型的迁移文件吗?
-
你的关系..我认为应该是
User属于Language和LanguagehasMany/hasOne用户.. -
@Prospero 我添加了。
标签: laravel eloquent laravel-8