Laravel – Как получить строку с 2 столбцами?

Я хочу показать список materi (таблица) на основе 2 значений из 2 столбцов. и столбец:

kelas (из пользовательской таблицы)
nama_mapel (из таблицы mapel), но в материи это просто "mapel", а не nama_mapel.

Мой StudentController:

public function showMateriList($id)
{
    $user = Auth::user();

    $mapel = mataPelajaran::findOrFail($id);

    $materis = Materi::where('kelas', '=', Auth::user()->kelas)
                        ->orWhere('mapel', '=', $mapel->nama_mapel);

    return view('pages.student.materi.showMateriList', compact('user', 
    'mapel', 'materis'));
}

Мое мнение:

 @foreach ($materis->chunk(4) as $materi)
    <div class="row">
      <!-- Show List of Mapels -->
      @foreach($materi as $m)
        <div class="col-lg-3 col-6">
            <!-- small box -->
            <div class="small-box bg-info">
            <div class="inner">
                <h4>{{ $m->judul }}</h4>
                <br>
                <p style="line-height:0px;">{{ $m->mapel }}</p>
                <p>{{ $m->kelas }}</P>
            </div>
            <div class="icon">
                <i class="fas fa-address-book"></i>
            </div>
            <a href="/Student/Materi/Single{{ $m->id }}" class="small- 
   box-footer">Lihat Materi Ini <i class="fas fa-arrow-circle-right"></i> 
  </a>
            </div>
        </div>
        <!-- ./col -->
      @endforeach
    </div>
    @endforeach

Мой маршрут:

Route::get('/Student/Materi/List/{id}', 
'StudentController@showMateriList')->middleware('role:Student');

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

Слишком мало аргументов для функции Illuminate\Database\Eloquent\Builder::chunk(), 1 передан в E:\laravel-projects\laralearn\storage\framework\views\eaf6a642fcf11eb5ecd3b5d7ed076551ba24d459.php в строке 26 и ровно 2 ожидается


person Abdurozzaq Nurul Hadi    schedule 24.10.2019    source источник
comment
Вы пропустили возможность выполнить запрос $materis = Materi::where('kelas', '=', Auth::user()->kelas) ->orWhere('mapel', '=', $mapel->nama_mapel)->get()   -  person porloscerros Ψ    schedule 24.10.2019
comment
Я не понимаю, можете ли вы объяснить больше?   -  person Abdurozzaq Nurul Hadi    schedule 24.10.2019
comment
Если вы сделаете $materis = Materi::where('kelas', '=', Auth::user()->kelas) ->orWhere('mapel', '=', $mapel->nama_mapel);, $materis будет объектом Query Builder, а не коллекцией (результатом запроса). Добавьте к нему ->get(), чтобы выполнить запрос   -  person porloscerros Ψ    schedule 24.10.2019
comment
О да, я пропустил -›get() ; он не показывает ошибки, но он пуст...   -  person Abdurozzaq Nurul Hadi    schedule 24.10.2019
comment
Похоже, в таблице материалов нет записей с этим пользователем-›kelas или с этим mapel-›nama_mapel.   -  person porloscerros Ψ    schedule 24.10.2019
comment
ОХХХ ДАААА! Это работает! Спасибо @porloscerrosΨ. да, для mapel-›nama_mapel нет записей... Спасибо... ????   -  person Abdurozzaq Nurul Hadi    schedule 24.10.2019


Ответы (1)


Проблема в запросе. Вы не получаете и не получаете результат.

Вместо этого попробуйте это:

$materis = Materi::where('kelas', '=', Auth::user()->kelas)
                   ->orWhere('mapel', '=', $mapel->nama_mapel)->get();

Надеюсь, это работает.

person Muhammad Addan Sarfraz    schedule 24.10.2019