PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-Laravel使用belongtoMany从ID获取模型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用Laravel 4构建应用程序,但数据透视表存在一些问题.

有3个表类别,产品,products_categories(数据透视)

类别模型

public function product()
{
    return $this->belongsToMany('Product', 'products_categories');

}

产品型号

public function category()
{
    return $this->belongsToMany('Category', 'products_categories');
}

products_categories表具有product_id和category_id列.

我想要的是拿走该类别下的所有产品,并在视图中列出它们

$category = Category::where('id' , '=' , '7')->first();

    foreach($category->product as $product){

        echo $product->id;
    }

我可以看到与特定类别相关的产品ID,但是当我想使用它来获取所有产品本身时,例如:

    $category = Category::where('id' , '=' , '7')->first();

    foreach($category->product as $product){

        $product = Product::where('id' , '=' , $product->id )->get();
    }

    return View::make('index')->with('product',$product);

它不起作用:(出现此错误

我试过了

$category = Category::where('id' , '=' , '7')->first();

    $product = array();

    foreach($category->product as $product){

        $product[] = Product::where('id' , '=' , $product->id )->get();

    }

    return View::make('index')->with('product',$product);

这次抛出这个错误

我该如何解决

解决方法:

直接的问题是您试图从foreach循环中重用迭代器变量.这会导致您出乎意料的结果.

foreach($category->product as $product) {
                              ^^^^^^^^
    $product = Product::where('id' , '=' , $product->id )->get();
    ^^^^^^^^
}

但是,无需执行任何操作. $category-> product已经是Eloquent产品模型的集合.无需尝试再次检索单个产品;你已经有他们了.

如果您尝试将此Collection传递给视图,则可以执行以下操作:

return View::make('index')->with('product', $category->product);

另外,作为旁注,如果您尝试按ID查找记录,则可以使用find()方法

$category = Category::find(7);

大佬总结

以上是大佬教程为你收集整理的php-Laravel使用belongtoMany从ID获取模型全部内容,希望文章能够帮你解决php-Laravel使用belongtoMany从ID获取模型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: