【问题标题】:Relations in Laravel 5Laravel 5 中的关系
【发布时间】:2015-11-23 20:28:09
【问题描述】:

我的产品型号:

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

我的模型类别有:

public function produtos(){
        return $this->hasMany('estoque\Produto');
}

尝试从视图view中的produto访问:

<td> {{$p->categoria}} <td>

返回一个数组:

{"id":1,"nome":"Cerveja","descricao":"Todas cervejas","ativo":1,"created_at":"2015-10-24 13:53:14","updated_at":"2015-10-24 13:53:14"}

这不应该返回分类对象吗? 我想这样访问:

<td> {{$p->categoria->nome}} <td>

不是:

{{$p->categoria['nome']}}

但它是一个数组:

Trying to get property of non-object

但在文档中返回的是一个对象而不是数组Laravel。有什么想法吗?

【问题讨论】:

  • 您是否尝试过在加载产品时使用预加载?试试$p = Product::with('categoria')-&gt;get()
  • 返回的总是一个对象。您的类别 ID 字段在 Product 模型上是如何命名的?
  • @LuisDalmolin categoria_id
  • 你不是不小心用了toArray()吗?

标签: php laravel-5


【解决方案1】:

您可能需要在关系中指定本地和外键。 检查这个:

http://laravel.com/docs/5.1/eloquent-relationships

你忘了写这样的东西:

return $this->hasMany('estoque\Produto', 'foreign_key', 'local_key');

如果您不使用传统的 ID 名称,则应指定它。在这种情况下

return $this->hasMany('estoque\Produto', 'categoria_id', 'id');
return $this->belongsTo('estoque\Categoria', 'id', 'categoria_id');

【讨论】:

  • 刚刚return $this-&gt;belongsTo('estoque\Categoria', 'categoria_id'); 工作,编辑你的答案。谢谢大佬。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2021-05-09
  • 2016-05-26
  • 1970-01-01
相关资源
最近更新 更多