RDB

Laravel カンマ区切りで登録されているデータの扱い

Laravel

プロジェクトによって中間テーブルではなくて、カラムに1次元配列の値があるプロジェクトがあるので対処する必要がある。

この設計って便利なのか?🐱❓

データの取得を考えても中間テーブルの方がシンプルに見えるが。。

 


アンケートとってみよ〜!

 

 

テーブルの例

 

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

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)