我有两个表:UserActivities
和Activities
。
活动:
| 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]);