プロジェクトによって中間テーブルではなくて、カラムに1次元配列の値があるプロジェクトがあるので対処する必要がある。
この設計って便利なのか?🐱❓
データの取得を考えても中間テーブルの方がシンプルに見えるが。。
🍜カンマ区切りの1次元配列での値保存
この設計って便利なの?私はよわよわPGなんで教えて欲しい…💦
中間テーブルのほうがシンプルで良いと思うのだが🐱❓https://t.co/6IGEGmZ764#DB設計— 優さん🌷わくわく開発YouTuber (@yuu13n6) April 1, 2020
アンケートとってみよ〜!
もくじ
テーブルの例
shops
shop_id | name | customer_ids |
1 | 優さんのお店 | ,1,4,3, |
2 | 住めば宮吉田町支店 | ,2,5, |
customers
customer_id | name |
1 | 田中 |
2 | 鈴木 |
3 | 太郎 |
4 | 玉井 |
5 | 佐藤 |
Laravelでの取得
<?php namespace App\Http\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; use DB; class Shop extends Model { ・・・ /** * 指定した顧客がお気に入りのお店のid群を取得 * * @param int $customer_id * @return array */ public function getMyFavoriteShopIds($customer_id) { $myShops = self::where('customer_ids','like','%,'.$customer_id.',%') ->orWhere('customer_id', $customer_id) ->isNotDeleted() ->get(); $shopIds = []; foreach ($myShops as $myShop) { $shopIds[] = $myShop->shop_id; } return $shopIds; } ・・・
MySQL
外部サイトを参照してください
@see