Я многому учусь об этих красноречивых отношениях, но я не совсем здесь в своем понимании.Laravel 5 hasManyThrough error
У меня есть три таблицы:
Кандидаты • ид
• candidate_number
• givennames
• FamilyName
• д.р. • created_at
• updated_at
Результаты • идентификатор
• certificate_number
• candidate_id
• qualification_id
• created_at
• updated_at
Квалификация • идентификатор
• код
• название
• created_at
• updated_at
Кандидат имеет много результатов, и квалификация имеет много результатов. Результат принадлежит к квалификации и кандидату. На странице candidaes.show я хочу показать, какие квалификации связаны с этим кандидатом, используя отношения hasManyThrogh. Вот мои модели.
Кандидаты:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Candidate extends Model {
protected $table = 'candidates';
public $timestamps = true;
public function result()
{
return $this->hasMany('App\Result');
}
public function qualification()
{
return $this->hasManyThrough('App\Qualification', 'App\Result');
}
}
Результат Модель:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Result extends Model {
protected $table = 'results';
public $timestamps = true;
public function candidate()
{
return $this->belongsTo('App\Candidate');
}
public function qualification()
{
return $this->belongsTo('App\Qualification');
}
}
Квалификация Модель:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Qualification extends Model {
protected $table = 'qualifications';
public $timestamps = true;
public function result()
{
return $this->hasMany('App\Result');
}
public function candidate()
{
return $this->hasManyThrough('App\Candidate', 'App\Result');
}
}
В моем кандидата контроллер:
public function show($id)
{
$candidate = Candidate::with('qualification')->find($id);
return view('candidates.show', compact('candidate'));
}
и на мой взгляд:
@extends('app')
@section('content')
<h1>{{ $candidate->givennames }} {{ $candidate->familyname }}</h1>
<div class="body"> {{ $candidate->dob }} </div>
<div class="body"> {{ $candidate->candidate_number }} </div>
<h3> Centre </h3>
<h3> Qualifications </h3>
@foreach($candidate->qualification as $qualification)
<div class="body"> {{ $qualification->title }} </div>
@endforeach
@stop
Однако это перенастройка следующее сообщение об ошибке:
SQLSTATE [42S22]: Column не найдено: 1054 Неизвестный столбец 'qualifications.result_id' в 'on clause' (SQL: выберите qualifications
. *, results
. candidate_id
от qualifications
внутреннее соединение results
на results
. id
= qualifications
. result_id
, где results
. candidate_id
in (17))
Может ли кто-нибудь помочь мне или указать мне в правильном направлении?Я даже не уверен, что поступаю правильно с hasManyThrough.
Извините, не знаю, хорошо ли я объясняю себя. Результат имеет только одну квалификацию. По крайней мере, это то, что я пытаюсь сделать. – 0w3n86