много-много ошибок в отношениях в Laravel - PullRequest
0 голосов
/ 27 октября 2019

у меня две таблицы ,

1) квалификаций

2) учителей

один учитель может иметь много квалификаций

я создал

сводная таблица; qualif_teacher

с двумя столбцами ( teacher_id & qualif_id )

когда я сохраняю информацию об учителе, teachers qualifications are saving correctly with multiple ids,моя проблема - я получаю ошибку, когда пытаюсь просмотреть квалификацию учителей в моем блейд-файле.

ошибка: Объект класса stdClass не может бытьпреобразован в строку

Маршрут: / учителя

Контроллер индекса:

public function index()
{
  $teachers= DB::table('teachers')
  $qualifs = DB::table('qualifs')->find($teachers);
return view('teachers.index',compact('teachers','qualifs'));
}

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

public function edit($id)
  {
    $qualifs = DB::table('qualifs')->find($id);
      $teacher = Teacher::find($id);
      return response()->json([
          'status' => 'success',
          'teacher' => $teacher,
          'qualifs'=>$qualifs,
      ]);

  }

Вид:

@if(isset($teachers))
  @foreach($teachers->qualifs as $qualif)
      <li>{{ $qualif->qual }}</li>
      @endforeach
@endif

Ответы [ 3 ]

0 голосов
/ 27 октября 2019

здесь вы передаете переменную $ teacher в функцию find, но find всегда ожидает, что int number выполнит его процесс. Вот почему вы получаете эту ошибку.

Поэтому попробуйте заменить это

public function index()
{
  $teachers= DB::table('teachers')
  $qualifs = DB::table('qualifs')->find($teachers);
return view('teachers.index',compact('teachers','qualifs'));
}

на этот код

public function index()
    {
      $teacher= Teacher::with('qualifs')->first();
      foreach($teacher->qualifs as $ qualif)
     {
         $qualiflist[]=$qualif->name;
     }
    dd($qualiflist);
    return view('teachers.index',compact('teacher','qualifs'));
    }

, который должен решить вашу проблему

0 голосов
/ 27 октября 2019

Попробуйте что-то подобное на вашем контроллере

//Please ensure you import the both related models on the top of your controller
 use App\Qualifs;
 use App\Teacher;

      public function edit($id)
      {
        $teacher = Teacher::find($id); //if the id edit is accepting belongs to the teacher model 
        return $teacher->qualifs()->get(); //this should return all qualifications for this particular teacher so far as the relationships are set

        $qualifs = Qualifs::find($id); //if the id edit is accepting belongs to the Qualif model
         return $qualifs->teachers()->get(); //this should return all teachers for this particular qualifications so far as the relationships are set
      }
0 голосов
/ 27 октября 2019

Измените

return view('teachers.index',compact('teachers','$qualifs'));

на

return view('teachers.index',compact('teachers','qualifs'));

Вы добавили $, и это не сработает.

И по вашему мнению

@if(isset($teachers))
@foreach($teachers->qualifs as $qualif)
<li>{{ $qualif->qual }}</li>
  @endforeach
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...