laravel - 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)
我不明白为什么。提前致谢
解决方案
使用 DB 门面返回一个实例Illuminate\Database\Query\Builder
所以关系将无法访问。
相反,您需要一个Eloquent
模型实例,您可以直接使用该模型:
use App\Indicador;
...
$indicadores = Indicador::all();
或者正如@Chris建议的那样,急切的加载:
$indicadores = Indicador::with('categoria')->get();
推荐阅读
- c# - ServiceStack ORMLite 如何在查询中解析 JSON 数据
- asp.net-core - 如何在下面的代码中返回成功以使用 asp.net 核心?
- stripe-payments - 订阅设置试用期时如何防止在条带中创建重复订阅
- python - 通过 Jupyter Notebooks 的 psycopg2 psql 命令不起作用
- sql-server - 查找整个数据库中表的每一列(不包括空白和空值)中的记录数
- vue.js - 有条件地添加一个JS脚本?
- c# - 在 IIS 上使用 Windows 身份验证的 Asp.Net Core MVC
- python - 谷歌云中使用的 blob 名称是什么?
- reactjs - AWS S3 - 我们计算的请求签名与签名不匹配
- xml - XPath - 查找相似但包含非字母数字字符