Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Laravel在页面上分离不同子类别的产品_Php_Mysql_Laravel 4.2 - Fatal编程技术网

Php 使用Laravel在页面上分离不同子类别的产品

Php 使用Laravel在页面上分离不同子类别的产品,php,mysql,laravel-4.2,Php,Mysql,Laravel 4.2,我使管理员能够在子类别下创建多个类别。现在,我想显示分配给类别的每个产品 问题是,每个子类别都显示相同的产品。最可能的问题在于数据库和它们的存储方式,但我不确定确切的位置 到目前为止,这是我的控制器 public function showCategoryInfo($subcatId) { $dual = DualSubCategories::where('sub_cat_id', '=', $subcatId)->get(); $dual_products = DualSubCateg

我使管理员能够在子类别下创建多个类别。现在,我想显示分配给类别的每个产品

问题是,每个子类别都显示相同的产品。最可能的问题在于数据库和它们的存储方式,但我不确定确切的位置

到目前为止,这是我的控制器

public function showCategoryInfo($subcatId) {

$dual = DualSubCategories::where('sub_cat_id', '=', $subcatId)->get();
$dual_products = DualSubCategories::with('products')->findOrFail( $subcatId );  

    $subcat1 = SubCategories::with('products')->findOrFail( $subcatId );
        return View::make('site.single_subcategory', [
            'dual' => $dual,
            'dual_products' => $dual_products
        ]);
}
这是我的看法

@foreach($dual as $dual_info)

    <h3>{{ $dual_info['dual_sub_cat_name'] }}</h3>
        <div class="row">
        <div class="table-responsive">
            <table class="table table-bordered">
                <tbody>   

                    @foreach($dual_products->products as $i => $product)
                        <tr>
                            <td>{{ $product['title'] }}</td>                                                  
                        </tr>
                    @endforeach

                </tbody>
            </table>
        </div>
@endforeach
桌子看起来像这样

 // dual_category
dual_sub_cat_id sub_cat_id dual_sub_cat_name 
   1               1         test 1
   2               1         test 2

// sub_category
sub_cat_id   sub_cat_name
     1          name 1

// products 
product_id   sub_cat_id    dual_sub_cat_id
   1             1               1 
   2             1               2
从表
products
中,我有两个产品在同一子类别中,当我打开子类别(子类别id=1)时,我希望在第页上看到

test 1
product_id 1

test 2
product_id 2
但我明白了

test 1
product_id 1

test 2
product_id 1
使用模型更新双重子类别模型

public function subcategory()
{
    return $this->belongsTo('SubCategories', 'sub_cat_id');
}

public function products()
{

   return $this->hasMany('Product', 'dual_sub_cat_id');
}
public function category()
{
    return $this->belongsTo('Category', 'category_id');
}

public function products()
{

   return $this->hasMany('Product', 'sub_cat_id');
}
子类别模型

public function subcategory()
{
    return $this->belongsTo('SubCategories', 'sub_cat_id');
}

public function products()
{

   return $this->hasMany('Product', 'dual_sub_cat_id');
}
public function category()
{
    return $this->belongsTo('Category', 'category_id');
}

public function products()
{

   return $this->hasMany('Product', 'sub_cat_id');
}
产品模型

public function categories()
{
    return $this->hasMany('Categories', 'category_id');
}

有两件事出了问题:

您可以执行循环和嵌套循环。当上循环第二次循环时,它使用与第一个循环相同的数据执行内循环。
$dual_产品
不会第二次或第三次更改。它不依赖于上循环

但这并不能解释为什么你会看到一种产品。在控制器中,调用
$dual\u products=DualSubCategories::with('products')->findOrFail($subcatId)。获取一个(findOrFail)具有子类别ID的DualSubCategory。这不会失败,因为您使用
sub_cat_id=1调用了它,而且巧合的是,该id存在于数据库中

如果您的关系设置正确,这应该会起作用:

控制器


数据是如何从数据库中提取的?我已经用我使用的部分模型更新了我的问题哦,太接近了。。非常感谢你的帮助。这就是诀窍。
@foreach($dual as $dual_info)
    <h3>{{ $dual_info->dual_sub_cat_name }}</h3>
        @foreach($dual_info->products as $i => $product)
            {{ $product->title }}
    @endforeach
@endforeach