
プロジェクトによって中間テーブルではなくて、カラムに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

