laravel 5.7 Взаимоотношения принадлежат множеству ошибок - PullRequest
0 голосов
/ 22 октября 2018

Я новичок в Laravel, я начинаю с Laravel 5.7.У меня две модели.

Modelo Категория:

class categoria extends Model
{
    public function indicadores()
    {
        return $this->hasMany('App\Indicador');
    }
}

Modelo Indicador:

class Indicador extends Model

    {
        public function categoria()
        {
            return $this->belongsTo('App\categoria');
        }
    }

В контроллере я ищу все Indicador

class IndicadorController extends Controller {

       public function index() {       
         $indicadores = DB::table('indicadors');
        return view('indicador.index', ['indicadores' => $indicadores]);
    }

Когда я пытаюсь показать категорию, к которой относится индикатор,

 <tbody>
                    @foreach ($indicadores as $indicador)
                    <tr>
                        <td>{{ $indicador->categoria->nombre }}</td>
                    </tr>
                    @endforeach    
                </tbody>

я получаю следующую ошибку

Неопределенное свойство: stdClass :: $ categoryoria (View:resources \ views \ indicador \ index.blade.php)

И я не понимаю, почему.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Используйте Eloquent вместо построителя запросов:

class IndicadorController extends Controller {

    public function index() {       
        $indicadores = Indicador::all();
        return view('indicador.index', ['indicadores' => $indicadores]);
    }

}
0 голосов
/ 22 октября 2018

Использование фасада БД возвращает экземпляр Illuminate\Database\Query\Builder

, поэтому связь не будет доступна.

Вместо этого вы хотите Eloquent экземпляр модели, который вы можете использовать модель напрямую:

use App\Indicador;
...
$indicadores = Indicador::all();

или, как подсказывает @ Крис , энергичная нагрузка:

$indicadores = Indicador::with('categoria')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...