связь laravel со столбцом json

#mysql #laravel #eloquent #laravel-relations

Вопрос:

 //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');
        }
    
    }
 

Вопрос:

В настоящее время у меня есть 2 таблицы: игры и продвижение, но у меня возникают проблемы при установлении отношений, потому что столбец game_id внутри таблицы продвижения является JSON, поэтому к нему сложно присоединиться. Есть ли какие-либо обходные пути, позволяющие легко объединить их вместе, чтобы получить данные игр?

Ответ №1:

создайте связь «многие ко многим» между вашими играми и таблицами продвижения,
поместите ваши идентификаторы game_id в сводную таблицу (game_promotion) вместо поля JSON,
Отношения «многие ко многим»