Laravel——在非对象上调用成员函数get()


Laravel - Call to a member function get() on a non-object

@foreach ($wishItems as $wishItem)
    <?php $products = Product::find($wishItem->product_id)->get(); ?>
    @foreach($products as $product)
        @if($product->id == $wishItem->product_id)
            Name: <a href="{{ URL::route('product', $product->id) }}"> {{ $product->title }} </a><br>
            Price: {{ $product->price }} &euro;<br>
            <hr>
        @endif
    @endforeach
@endforeach

$wishItems是发送到此视图的 var,没关系...... $products = Product::find($wishItem->product_id)->get();在这里我有问题..我得到错误: Call to a member function get() on a non-object ....我试图用数字替换$wishItem->product_id例如3 [它存在于数据库中]但同样......

我假设你真正想要的是:

@foreach ($wishItems as $wishItem)
    <?php $product = Product::find($wishItem->product_id); ?>
    Name: <a href="{{ URL::route('product', $product->id) }}"> {{ $product->title }} </a><br>
    Price: {{ $product->price }} &euro;<br>
    <hr>
@endforeach

您的$wishItem实际上只是引用单个产品,因此您无需查询集合并执行循环。

假设您有一个愿望项和产品模型

class WishItem extends Eloquent {
    public function product()
    {
        return $this->hasOne('Product');
    }
}

在您看来

$product = $wishItem->product;

更多信息:

http://laravel.com/docs/eloquent#basic-usage