我是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)
我不明白为什么。预先感谢
答案 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]);
}
}