#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,
Отношения «многие ко многим»