如何获取用户ID并使用它在laravel中的store方法中发布新注释?

时间:2018-05-08 10:48:37

标签: php laravel-5

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



 ItemID    |    IsNull   |  Value
  IID1     |      Yes    |
  IID2     |      Yes    |
             ......




2 个答案:

答案 0 :(得分:0)

为关系创建模型时,请使用create代替save

$user->reviews()->create($review);

create方法会关联相关的关系ID。

我可以看到您正在保存$review两次。进入place_reviews后进入user_reviews。请考虑更改数据库逻辑,因此reviews 属于 UserPlace。这将是一个更明智的结构:

<强>控制器

 $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;

}