ventures 999
ventures 999

Reputation: 199

laravel relationship with json column

//controller   

    $promotion = Promotion::findOrFail($id);
        
        //return
        Array
        (
            [id] => 2
            [en_title] => promo1
            [game_id] => Array
                (
                    [0] => 3
                    [1] => 4
                    [2] => 5
                )
        
            [amount] => 100.00
            [start_at] => 2021-02-22
            [end_at] => 2222-02-22
            [status] => 1
        )
    
    //model promotion
    
    class Promotion extends Model
    {
        use HasFactory;
    
        protected $guarded = [];
    
        protected $casts = [
            'game_id' => 'array'
        ];
    
        public function getAllGames()
        {
            return $this->belongsTo(Game::class, 'game_id', 'id');
        }
    
    }

Question:

Currently, I have 2 tables which are games and promotion, but I get trouble when coming into a relationship because the column of game_id inside the promotion table is a JSON, so that is hard to join it. Is there any work around can easily join them together in order to retrieve games data?

Upvotes: 2

Views: 590

Answers (1)

Mohsen Noroozi
Mohsen Noroozi

Reputation: 91

make many-to-many relationship between your games and promotion tables,
put your game_ids in pivot table (game_promotion) instead of JSON field,
Many To Many Relationships

Upvotes: 2

Related Questions