У меня проблема с тем, чтобы все отзывы, представленные другими пользователями, отображались в профиле соответствующего пользователя (рассматриваемого пользователя).
Есть две таблицы. Сначала таблица users
с id
, name
, email
, photo
, phone
и title
. И у меня есть таблица avis
, в которой хранятся отзывы с id
, profile_id
, user_id
и comment
. (user_id
получает идентификатор User
, отправляющего форму, а profile_id
получает id
User
, получающего отзыв).
Я пытался сделать это следующим образом и не знаю, правильный ли это подход. И я не уверен, правильно ли я сделал отношения. Я новичок в Laravel. Но в любом случае это то, что я пробовал до сих пор:
Это User
модель:
public function avis()
{
return $this->hasMany('App\Avis', 'profile_id', 'user_id');
}
А это моя Avis
модель:
protected $fillable = ['comment','profile_id'];
public function user()
{
return $this->belongsTo('App\User');
}
Это то, что я сделал в контроллере, отображающем профиль и список отзывов:
public function Details($id)
{
$detail = User::with(['area.town', 'services'])->find($id);
$avis = User::whereHas('avis', function ($query) use ($id) {
$query->where('profile_id', '=', $id);
})
->limit(3)
->get();
//dd($avis);
return view('Users', compact('avis', 'detail'));
}
Вот моя форма, которая используется для написания отзыва:
<div id="avisForm">
<p class="feedback_message">We are here to make sure you are sastified and your transactions are safe. We do appreciate and will respond quickly to any feedback from you.</p>
{!! Form::open(['route' => 'avis.store']) !!}
<input type="hidden" name="profile_id" value="{{ $detail>id }}">
{!! Form::textarea('comment', null, ['placeholder' => 'Message', 'required' => 'required']) !!}
{!! Form::submit('Envoyez', ['class' => 'formBtn','style' => 'margin-top:10px']) !!}
{!! Form::close() !!}
</div>
И это метод контроллера, используемый для хранения отзыва:
public function store(AvisCreateRequest $request)
{
$avis = new Avis;
$id = Auth::user()->id;
$avis->comment = $request->comment;
$avis->profile_id = $request->profile_id;
$avis->user_id = $id;
//dd($avis);
$avis->save();
return back()->with('success_message', 'Votre Avis a ete envoyez avec succes!');
}
Может кто-нибудь указать мне, что я делаю не так?