我有一个名为tables
products
id
sku
ean13
price
posts
id
created_at
translations
id
translatable_id
translatable_type(it could be post or product)
name
description
locale
的表和另一个名为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);
谢谢您的帮助。
答案 0 :(得分:1)
渴望从关系中加载名称列
$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>
希望这会有所帮助