如何使用雄辩(拉拉维尔)关系插入记录?



我有两个表:UserActivitiesActivities

活动:

| Column | Type             |
|--------|------------------|
| id     | int              |
| name   | varchar(255)     |
|        |                  |

用户活动:

| Column      | Type | Comment                  |
|-------------|------|--------------------------|
| id          | int  |                          |
| user_id     | int  |                          |
| activity_id | int  | //id of activity by name |

现在要将项目插入到模型中UserActivity我必须写两个这样的语句

$activity = Activity::where('name', '=', 'user_login')->first();
UserActivity::create(['user_id' => Auth::login(), 'activity_id' => $activity->id]);

虽然这很好,但我只是在阅读雄辩的关系,想知道是否有办法创建belongsTo或某种关系并像这样直接插入它

UserActivity::create(['user_id' => Auth::login(), 'activity' => 'user_login']);

它通过搜索名称自动插入activity_id?可能吗?

在阅读@kerbholz评论后做了更多的研究后,我认为这是这样做的方法吗?

活动.php(模型(

class Activity extends Model {
public function user_activities() {
return $this->hasMany(UserActivity::class);
}
}

主代码:

Activity::where('name', '=', 'user_login')->first()->user_activities()
->create(['user_id' => Auth::id()]);

或者就我而言,这可确保活动名称始终存在:

Activity::updateOrCreate(['name' => 'user_test'])->user_activities()->create(['user_id' => 1]);

最新更新