此代码似乎没有从会话中捕获用户ID,因此我可以将其用作数据库中用于添加注释的位置的外键。
ItemID | IsNull | Value
IID1 | Yes |
IID2 | Yes |
......

答案 0 :(得分:0)
为关系创建模型时,请使用create
代替save
。
$user->reviews()->create($review);
create
方法会关联相关的关系ID。
我可以看到您正在保存$review
两次。进入place_reviews
后进入user_reviews
。请考虑更改数据库逻辑,因此reviews
属于 User
和Place
。这将是一个更明智的结构:
<强>控制器强>
$review = new Review([
'review' => request('review'),
'rating' => request('rating')
]);
$review->user()->associate($user);
$review->place()->associate($place);
$review->save();
审核模式
public function user()
{
return $this->belongsTo(User::class);
}
public function place()
{
return $this->belongsTo(Place::class);
}
审核表
$table->unsignedInteger('user_id');
$table->unsignedInteger('place_id');
用户和地点模型
public function reviews()
{
return $this->hasMany(Review::class);
}
如果一个 Review
与多个 {{1}相关,您还可以选择使用属于多个关系}}
另一个提示:
您也可以考虑使用Place
来确保您的用户有效。这样,如果没有用户ID,您的代码将抛出findOrFail
,而不是继续使用Exception
用户,这可能导致难以发现的错误。
null
答案 1 :(得分:0)
你应该这样做。
$user = \Auth::user();
if(!is_null($user)){
$user_id = $user->id;
}