2017-11-15 7 views
0

product_tbl IDを使用して3つのテーブルのアイテムを表示するにはどうしたらいいですか?3テーブルからのアイテムを表示するにはどうすればいいですか

とforeachを使用します。またはそれを表示する別の方法があるかどうかを確認します。

The tables

私は第三表や絵テーブルを取得できませんでした。 以下の既存のコードを使用してください。 まだエラーがあります。

$product_list = DB::table('product_tbl') 

     ->leftjoin('brand_tbl', 'product_tbl.id', '=', 'brand_tbl.product_id') 

     ->select('*') 

     ->get(); 

return vehicles_list; 


    $prod_list = array(); 
    foreach ($product_list as $key => $value) { 

     $prod_list [$value->products_name][] = $value; 

    } 

print_r($prod_list); 

お手数をおかけしてください。

+0

Eloquent Relationshipsを使用するとよいでしょう。これらのことはもっと簡単になります。 –

答えて

0

テーブル構造が石で設定されていない場合は、より正規化され、索引付け可能な構造のために、次の構造を試してみてください。私はいくつかの変更を加えました - 製品をカテゴリに、ブランドを製品に変更しました。これらのラベルは、私がこれを使って作業していたとき、私にはもっと意味がありました。また、すべてのフィールド名にエイリアスを付けずに、結合を可能にする完全な名前空間のフィールド名を実行します。 SQLを生成し、これらのテーブルその後、別のクエリは間違いなく役立つ

を移入するため

Visual Representation of a proposed table structure

は、この記事の一番下を参照してください。あなたはあなたのコードの画像テーブルに参加していません。

select * from so_category 
left outer join so_product on (product_category_id = category_id) 
left outer join so_picture on (picture_category_id = category_id) 

しかし、消費したいと思うようなデータは返されません。

Full Query Result

その場合Mysql Group Concat Functionは役立つかもしれません。

SELET 
so_category.*, 
so_product.*, 
(select GROUP_CONCAT(DISTINCT picture_url order by picture_url asc separator ",")) AS images 
FROM so_category 
LEFT OUTER JOIN so_product ON (product_category_id = category_id) 
LEFT OUTER JOIN so_picture ON (picture_category_id = category_id) 
GROUP BY product_id 

データが重複しない結果が得られます。 Group Concat Query Result

テーブルを作成および移入するSQL。

-- Create syntax for TABLE 'so_category' 
CREATE TABLE `so_category` (
    `category_id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `category_name` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`category_id`) 
) ENGINE=InnoDB CHARSET=utf8; 

-- Create syntax for TABLE 'so_picture' 
CREATE TABLE `so_picture` (
    `picture_id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `picture_url` varchar(100) DEFAULT NULL, 
    `picture_category_id` int(11) unsigned DEFAULT NULL, 
    PRIMARY KEY (`picture_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

-- Create syntax for TABLE 'so_product' 
CREATE TABLE `so_product` (
    `product_id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `product_name` varchar(100) DEFAULT NULL, 
    `product_brand_id` int(11) unsigned DEFAULT NULL, 
    `product_category_id` int(11) unsigned DEFAULT NULL, 
    PRIMARY KEY (`product_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


INSERT INTO `so_category` (`category_id`, `category_name`) 
VALUES 
    (1, 'chocolate'), 
    (2, 'flower'); 

INSERT INTO `so_picture` (`picture_id`, `picture_url`, `picture_category_id`) 
VALUES 
    (1, 'dmc1', 1), 
    (2, 'dmc2', 1), 
    (3, 'dmc3', 2), 
    (4, 'dmc4', 2), 
    (5, 'dmc5', 2); 

INSERT INTO `so_product` (`product_id`, `product_name`, `product_brand_id`, `product_category_id`) 
VALUES 
    (1, 'hershey', NULL, 1), 
    (2, 'tobleron', NULL, 1), 
    (3, 'oreo', NULL, 1), 
    (4, 'roses', NULL, 2), 
    (5, 'sunflower', NULL, 2); 
関連する問題