Как включить в запрос столбец из другой таблицы? - PullRequest
1 голос
/ 28 сентября 2019

У меня есть таблица с именем 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'

Я не знаю, где я должен поставить эту строку

Редактировать:

Когда я добавляю платеж, у меня всегда появляется один и тот же студент, который появляется ???

enter image description here

Я думаю, что проблема здесь ??По моей просьбе ???

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

Спасибо за помощь.

1 Ответ

1 голос
/ 28 сентября 2019

Стремится загрузить столбец имени из отношения

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

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...