如何获得其他用户为某个用户提交的推荐信
How can I get submitted testimonials for a user written by other users
我无法将其他用户提交的所有推荐显示在相关用户(正在审核的用户)的用户个人资料中。
有两个table。首先是 users
table 和 id
、name
、email
、photo
、phone
和 title
。我有一个 avis
table,其中存储了 id
、profile_id
、user_id
和 comment
的评价。 (user_id
获取提交表单的 User
的 ID,profile_id
获取正在接收推荐的 User
的 id
。
我试过像下面那样做,但真的不知道它是否是正确的方法。而且我不确定我的关系是否正确。我是 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!');
}
有人可以指出我做错了什么吗?
public function avis()
{
return $this->hasMany('App\Avis', 'profile_id', 'id');
}
嘿伙计,一定是这样的,'profile_id' 和 'user_id' 都是外键。 'id' 是您在用户 table 中的本地密钥,如果您调用 avis() 它将匹配 用户的 id table 与 avis table profile_id
如果您希望能够查询两种类型的 Avis
,User
写的和他写的,您的 User
模型将需要两种不同的关系收到。
public function receivedAvis()
{
return $this->hasMany('App\Avis', 'profile_id', 'id');
}
public function writtenAvis()
{
return $this->hasMany('App\Avis', 'user_id', 'id');
}
然后您可以这样查询收到的客户评价:
public function Details($id)
{
$user = User::with(['area.town', 'services'])->find($id);
$avis = $user->receivedAvis()
->limit(3)
->get();
return view('Users', compact('avis', 'user'));
}
如果需要,您还可以在 User
上使用关系加载 - 这样您就不必将多个变量传递给您的视图。它看起来像这样:
public function Details($id)
{
$user = User::with(['area.town', 'services'])->find($id);
$user ->load(['receivedAvis' => function ($query) {
$query->limit(3);
}]);
return view('Users', compact('user'));
}
然后您可以通过 $user
变量在视图中访问您的推荐:
@if(count($user->receivedAvis) > 0)
<div id="testimonials">
@foreach($user->receivedAvis as $avis)
<!-- place the code to display your testimonials here -->
@endforeach
</div>
@endif
请注意,我已将您的 $detail
变量重命名为 $user
,因为最好使用反映变量类型的变量名称。
我无法将其他用户提交的所有推荐显示在相关用户(正在审核的用户)的用户个人资料中。
有两个table。首先是 users
table 和 id
、name
、email
、photo
、phone
和 title
。我有一个 avis
table,其中存储了 id
、profile_id
、user_id
和 comment
的评价。 (user_id
获取提交表单的 User
的 ID,profile_id
获取正在接收推荐的 User
的 id
。
我试过像下面那样做,但真的不知道它是否是正确的方法。而且我不确定我的关系是否正确。我是 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!');
}
有人可以指出我做错了什么吗?
public function avis()
{
return $this->hasMany('App\Avis', 'profile_id', 'id');
}
嘿伙计,一定是这样的,'profile_id' 和 'user_id' 都是外键。 'id' 是您在用户 table 中的本地密钥,如果您调用 avis() 它将匹配 用户的 id table 与 avis table profile_id
如果您希望能够查询两种类型的 Avis
,User
写的和他写的,您的 User
模型将需要两种不同的关系收到。
public function receivedAvis()
{
return $this->hasMany('App\Avis', 'profile_id', 'id');
}
public function writtenAvis()
{
return $this->hasMany('App\Avis', 'user_id', 'id');
}
然后您可以这样查询收到的客户评价:
public function Details($id)
{
$user = User::with(['area.town', 'services'])->find($id);
$avis = $user->receivedAvis()
->limit(3)
->get();
return view('Users', compact('avis', 'user'));
}
如果需要,您还可以在 User
上使用关系加载 - 这样您就不必将多个变量传递给您的视图。它看起来像这样:
public function Details($id)
{
$user = User::with(['area.town', 'services'])->find($id);
$user ->load(['receivedAvis' => function ($query) {
$query->limit(3);
}]);
return view('Users', compact('user'));
}
然后您可以通过 $user
变量在视图中访问您的推荐:
@if(count($user->receivedAvis) > 0)
<div id="testimonials">
@foreach($user->receivedAvis as $avis)
<!-- place the code to display your testimonials here -->
@endforeach
</div>
@endif
请注意,我已将您的 $detail
变量重命名为 $user
,因为最好使用反映变量类型的变量名称。