laravel - 如何在查询中包含另一个表中的列?
问题描述
我有一个名为的表Payments
和另一个以Students
字段命名的表name
。
在我的控制器付款中,我想检索学生姓名。
我有这个:
public function index(Request $request)
{
$user = $request->user();
$payments = Payment::query()
->when($user->hasRole('admin') !== true, function (Builder $query) use ($user) {
$query->where('email', $user->email);
})
->when($request->has('search'), function (Builder $query) use ($request) {
$query->where('name', 'like', '%' . $request->input('search') . '%');
})
->paginate(5);
return view('admin.payments.index', compact('payments'))
->with('display_search', $user->hasRole('admin'));
}
如何加入学生表?
payment::whereHas('students'
我不知道我必须把这条线放在哪里
编辑:
当我添加付款时,我总是有同一个学生出现???
我认为问题出在这里??在我的要求中???
$query->where('name', 'like', '%' . $request->input('search') . '%');
})->with('students:id,name') // Here
->paginate(5);
索引刀片
<th>Date payment</th>
<th>Number seance</th>
<th>Price</th>
<th>Total</th>
<th>Name</th>
</tr>
</thead>
@foreach($payments as $payment)
<tr>
<td> {{$payment->date_payment->format('d/m/Y') }}</td>
<td> {{$payment->number_seance}}</td>
<td> {{$payment->price}}</td>
<td> {{$payment->total}}</td>
<td> {{$payment->students->first()->name}}</td>
<td>
谢谢您的帮助。
解决方案
渴望从关系中加载名称列
$payments = Payment::query()
->when($user->hasRole('admin') !== true, function (Builder $query) use ($user) {
$query->where('email', $user->email);
})
->when($request->has('search'), function (Builder $query) use ($request) {
$query->where('name', 'like', '%' . $request->input('search') . '%');
})->with('students:id,name') // Here
->paginate(5);
前提是您在Payment
模型中设置了关系
public function students()
{
return $this->hasMany('App\Student');
}
表中的一payment_id
列将students
表中的 引用为外键id
payments
Schema::create('students', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->unsignedBigInteger('payment_id')->nullable();
$table->foreign('payment_id')->references('id')->on('payments');
$table->timestamps();
});
访问集合中的单个学生
<td>{{ $payment->students->first()->name }}</td>
希望这可以帮助
推荐阅读
- c# - 使用 LINQ 将数据插入到使用序列作为主键生成器的表中
- css - 使用 CSS 旋转在相对层次结构中悬停不可靠
- python-3.x - Ubuntu“git pull --rebase”得到“无法统计对象”的错误 - 你能建议是什么问题吗
- redux - 我的减速器应该处理@@redux-saga-test-plan/INIT 操作吗?
- android - 一旦应用程序离线,React Native AsyncStorage 就会停止工作
- c# - 发布 POST 后在哪里可以添加 GET 方法?
- python - 使用 patch.Rectangle 绘制不规则光栅图时避免缓慢循环
- scala - 将 Scala 反射 MethodMirror 转换为 Scala 函数
- mysql - 基于加入条件的条件 INNER JOIN 或 LEFT JOIN
- azure - 使用 Azure AD Auth 和 Web 应用 API 进行多租户