【问题标题】:Group related product attributes分组相关的产品属性
【发布时间】:2013-06-13 23:05:57
【问题描述】:

我有一个产品表:

products
-id
-name
-image

还有一个 product_atts 表:

product_attributes
-product_id (FK)
-size (1, 2)
-memebership (1, 2, 3, 4, 6, 11)
-price

现在,当查询product_attributes 表并加入products 表时,我得到了所有的变化:

Array
(
    [0] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 1
            [membership] => 1
            [price] => 0.00
        )

    [1] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 1
            [membership] => 2
            [price] => 0.00
        )

    [2] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 1
            [membership] => 3
            [price] => 0.00
        )

    [3] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 1
            [membership] => 4
            [price] => 0.00
        )

    [4] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 1
            [membership] => 6
            [price] => 0.00
        )

    [5] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 1
            [membership] => 11
            [price] => 0.00
        )

    [6] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 2
            [membership] => 1
            [price] => 0.00
        )

    [7] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 2
            [membership] => 2
            [price] => 0.00
        )

    [8] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 2
            [membership] => 3
            [price] => 0.00
        )

    [9] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 2
            [membership] => 4
            [price] => 0.00
        )

    [10] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 2
            [membership] => 6
            [price] => 0.00
        )

    [11] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => 2
            [membership] => 11
            [price] => 0.00
        )

)

有没有办法让我得到如下所示的结果:

Array
(
    [0] => stdClass Object
        (
            [name] => Product 1
            [image] => Product1.png
            [size] => stdClass Object
                    (
                        [0] => 1,
                        [1] => 2                        
                    )
            [membership] => stdClass Object
                    (
                        [0] => 1,
                        [1] => 2,
                        [2] => 3,
                        [3] => 4,
                        [4] => 6,
                        [5] => 11                       
                    )
            [price] => 0.00
        )
)

这使得在我的 UI 等中使用这些数据变得更加容易。

【问题讨论】:

  • 那么您的查询是什么样的?

标签: php mysql database laravel


【解决方案1】:

您可能还没有意识到,但使用 Eloquent,您已经拥有了一切。一旦您在模型中创建了关系,您只需要一个根模型来访问与之相关的每一个。

假设您有自己的产品模型:

<?php

class Product extends Eloquent {

}

以及您的产品详细信息模型:

<?php

class ProductDetail extends Eloquent {

}

这样你就可以在它们之间建立关系

class Product extends Eloquent {

    public function details()
    {
       return $this->hasMany('ProductDetail');
    }

}

现在,如果您的控制器将模型列表传递给您的 UI:

public function index()
{
   return View::make('site.products')->with('products', Product::all());
}

在您的用户界面中,您将能够:

<ul>
    @foreach($products as $product)
        <li>
            <p>Product: $product->name</p>
            <p>Sizes:</p>
            <ul>
                @foreach($product->details as $detail)
                    <li>
                        {{$detail->size}}
                    </li>
                @endforeach
            </ul>
        </li>
    @endforeach
</ul>

【讨论】:

  • 谢谢你...但“细节”根本没有通过。我的模型名称与您的完全相同,只是我在 ProductDetail 模型中添加了 protected $table = 'product_tags';
  • 奇数。这正是我在这里使用的。做一个 dd($product->details) 和 paste.laravel.com 你的结果。这些是产品中的地雷:puu.sh/3fae8.png
  • Details 来了,你有一个 ProductDetail 集合。例如:["product_id"]=> string(1) "1" ["size"]=> string(1) "1" ["membership"]=> string(1) "6"。您希望拥有什么?
  • 嗯,你的 foreach 循环是有道理的,但它对我不起作用......我无法循环详细信息。所以我无法提取“大小”或“成员资格”......还有其他方法可以向您展示我的数据库和模型的外观吗?
  • 所以,这个(@foreach($product-&gt;details as $detail)) 不起作用,那么如果你在那个循环中dd($detail) 会得到什么?是否进入循环?
猜你喜欢
  • 2017-04-07
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
相关资源
最近更新 更多