首页 > 解决方案 > laravel 5.7 关系属于hasmany错误

问题描述

我是 laravel 的新手,我从 laravel 5.7 开始。我有两个模型。

模型类别:

class categoria extends Model
{
    public function indicadores()
    {
        return $this->hasMany('App\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 (View:resources\views\indicador\index.blade.php)

我不明白为什么。提前致谢

标签: laravel

解决方案


使用 DB 门面返回一个实例Illuminate\Database\Query\Builder

所以关系将无法访问。

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

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

或者正如@Chris建议的那样,急切的加载:

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

推荐阅读