laravel 5.7关系属于hasmany错误

时间:2018-10-22 16:23:58

标签: laravel

我是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 :: $ categoria(视图:resources \ views \ indicador \ index.blade.php)

我不明白为什么。预先感谢

2 个答案:

答案 0 :(得分:1)

使用数据库外观返回Illuminate\Database\Query\Builder的实例

因此无法访问该关系。

相反,您需要一个Eloquent模型实例,可以直接使用该模型:

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

或如@Chris所建议的那样,急于加载:

$indicadores = Indicador::with('categoria')->get();

答案 1 :(得分:0)

使用Eloquent代替查询生成器:

class IndicadorController extends Controller {

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

}