如何使用关系创建数据?

时间:2021-03-21 12:37:04

标签: php laravel

我在使用 laravel 关系创建数据时遇到了一些奇怪的行为。我获得的用户数据的 id2,但是当我创建数据关系时,返回的 user_id1

有人知道出了什么问题吗?


我使用 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);
}

3 个答案:

答案 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 修复了它。