“方法品牌不存在。”

Posted

技术标签:

【中文标题】“方法品牌不存在。”【英文标题】:"Method brand does not exist." 【发布时间】:2018-08-18 20:58:42 【问题描述】:

我知道它的基本原理,但无法弄清楚问题所在。好像我做的一切都是对的。我想与产品品牌建立关系,其中每个产品都有一个属于品牌的品牌 ID,而且在品牌模型中每个品牌都有很多产品。我使用 belongsTo 有很多关系来做到这一点,但它仍然向我展示了错误。

Product.php型号

namespace App;

use Illuminate\Database\Eloquent\Model;


class Product extends Model

     protected $fillable = [
        'sku',
        'name',
        'description',
        'brand_id',
        'image',
        'price',
        'stocks',
        'color',
        'size',
    ];

    protected $table = 'products';

    public function brand() 
        return $this->belongsTo('App\Brand');
    

Brand.php型号

namespace App;

use Illuminate\Database\Eloquent\Model;

class Brand extends Model

    protected $fillable = [
        'user_id',
        'name',
        'description'
    ];

    protected $table = 'brands';

    public function products() 
        return $this->hasMany('App\Product','brand_id', 'id');
    

routs.php

Route::get('/', function () 
   $products = \App\Product::all();

    echo $products->brand();

);

【问题讨论】:

只需从 $products->brand() 中删除 () 是的,我做了,然后它显示"Property [brand] does not exist on this collection instance." 你不能直接回显集合对象。 【参考方案1】:

$products 是 collection 的 Product 对象,因此要为每个对象获取品牌,您需要遍历集合:

foreach ($products as $product) 
    echo $product->brand->name;

【讨论】:

【参考方案2】:

编辑

您可以使用高阶函数来简化循环:

$products->each->brand->name

【讨论】:

"Property [brand] does not exist on this collection instance." 删除后告诉我 查看@Alexey 的回答,它解释了如何迭代集合。【参考方案3】:

您正在通过集合数据调用该方法。

你应该先循环产品,使用关系时不需要左括号。

代替

$products = \App\Product::all();

echo $products->brand();

应该是这样的。

$products = \App\Product::all();

foreach($products as $index => $product)
    echo $product->brand; //however this will return the Brand model and you can't echo a Model instead display the data via print_r or put it in $variable. then use the $variable as how you handle a model Data.


 $brand = $product->brand;
    echo $brand->name;
    echo $brand->description;


希望这能启发你。

【讨论】:

以上是关于“方法品牌不存在。”的主要内容,如果未能解决你的问题,请参考以下文章

PHP会话变量在不应该存在的时候存在,在应该存在的时候不存在

不存在与不存在

JS如何判断对象存不存在

关于sql查询b表中存在,a表中不存在的数据

java 程序包systerm不存在

选择...不存在不存在查询