我在使用 laravel 关系创建数据时遇到了一些奇怪的行为。我获得的用户数据的 id
为 2
,但是当我创建数据关系时,返回的 user_id
为 1
。
有人知道出了什么问题吗?
我使用 tinker 对其进行了测试,首先我获取了用户数据。并成功显示数据。
$user = User::find(2);
=> App\Models\User {#4292
id: 2,
username: "usefrfff@gmail.com",
status_id: 1,
created_at: "2021-03-21 12:14:17",
updated_at: "2021-03-21 12:14:17",
}
第二个我使用关系创建日志数据。
$user->logs()->create(['type_id' => 2]);
=> App\Models\Log {#4294
type_id: 2,
user_id: 1,
id: 11,
}
User.php
public function logs()
{
return $this->hasMany(Log::class);
}
Log.php
public function user()
{
return $this->belongsTo(User::class);
}
答案 0 :(得分:0)
我看不出究竟是什么导致了这样的问题,
但是您可以尝试为日志功能指定外键
public function logs()
{
return $this->hasMany(Log::class,'user_id');
}
希望这能让它发挥作用!
答案 1 :(得分:0)
试试下面的代码:
// in user model
public function logs()
{
return $this->hasMany(Log::class,'user_id','id');
}
// in log model
public function user()
{
return $this->belongsTo(User::class,'id','user_id');
}
答案 2 :(得分:0)
在访问 Log.php 之后,我发现它有一个 Observer,它在创建数据时放置一个默认值。
关系没有任何问题。我通过删除 Observer
修复了它。