【问题标题】:I cannot get value from an object in blade template Laravel 4我无法从刀片模板 Laravel 4 中的对象获取价值
【发布时间】:2014-12-04 08:53:43
【问题描述】:

我在刀片模板中有一个循环 foreach,我在其中打印来自特定模型的数据,问题是我无法获取“$pedido->proveedor()->first()->name”的值在代码中给我这个错误“ErrorException (E_UNKNOWN) Trying to get property of non-object (View: C:..”:

@foreach($pedidos as $pedido)  
    <tr>
        <td>
            {{ $pedido->id }}
        </td>
        <td>
           {{ $pedido->proveedor()->first()->name }}
        </td>
        <td>
          {{ date('d/m/Y', $pedido->fecha) }}
        </td>

          <td>
            <a onclick="return confirm('deseas borar este registro?')" class="btn btn-danger btn-xs fullButton">Borrar</a>
         </td>
     </tr>
@endforeach

这里奇怪的是,当我在模板的循环中编写这个“$pedido->proveedor()->first()”时,我得到一个像这样的对象:

      {"name":"nombre","domicilio":"domicilio","cp":"46006","poblacion":"poblacion","ciudad":"ciudad","pais":"pais"} 

但是编码这个“$pedido->proveedor()->first()->name”我得到了错误:

数据是从控制器发送的:

public function listPedidos()
{   

    $pedidos = Pedido::all();
//  this next pice of code shows me i can get the name as spected but only from php
//  foreach($pedidos as $pedido){
//     ddd($pedido->proveedor()->first()->name);exit;
//  }
    return View::make('pedidos/pedidos-list')->with('pedidos', $pedidos);

}

另一个奇怪的事情是我有不同型号的相同代码并且它正在工作。

提前感谢您的帮助。 ;)

【问题讨论】:

  • 你能告诉我们proveedor()函数吗?
  • 公共函数proveedor(){ return $this->belongsTo('Proveedor', 'idProveedor'); }

标签: php laravel laravel-4 eloquent blade


【解决方案1】:

问题解决了:

前面的答案还可以。我可以使用:

{{ $pedido->proveedor()->first()->name }}

{{ $pedido->proveedor->name }}

但是因为在循环的一种方式中没有内容可以引用,即($pedido->proveedor没有exixt)我使用这个:

{{ isset($pedido->Proveedor->name )?$pedido->Proveedor->name :''; }}

【讨论】:

    【解决方案2】:

    你应该使用:

    {{ $pedido->proveedor->name }}
    

    【讨论】:

    • 感谢您的回答,该代码似乎暂时显示了正确的结果,但屏幕很快改变并抛出了这个:“Symfony \ Component \ Debug \ Exception \ FatalErrorException(E_ERROR)调用成员非对象上的函数 first() "
    • 与开头相同:“ErrorException (E_UNKNOWN) Trying to get property of non-object (Vew:.." 尽管这:"{{ $pedido->proveedor }}" 给了我全部对象 {"name":"nombre","domicilio":"domicilio","cp":"46006","poblacion":"poblacion","ciudad":"ciudad","pais":"pais"}
    • @user2957058 你确定你的表中没有名称为proveedor 的列吗?
    • Pedidos 表: 如果不存在则创建表 pedidos (id int(10) unsigned NOT NULL AUTO_INCREMENT, observaciones text, ` idProveedor ` int(10) unsigned NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; Proveedor 表: CREATE TABLE IF NOT EXISTS proveedores (name varchar(40) NOT NULL, domicilio varchar(50) DEFAULT NULL, cp varchar(10) DEFAULT NULL, @ 987654331@ int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
    • 我只有 idProveedor 作为 pedidos 表中的外键,我在 pedido 模型中也有关系:public function proveedor(){ return $this-&gt;belongsTo('Proveedor', 'idProveedor'); } 和这个:public function pedido(){ return $this-&gt;hasMany('Pedido', 'idProveedor'); } 在proveedor 模型中
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2013-05-08
    • 2017-08-01
    相关资源
    最近更新 更多