Gerçek veri geldiğinde AI'ın kullanacağı rehber
30 Aralık 2025
muzibu_playlistables
muzibu_playlist_sector
muzibu_playlist_radio
| Kolon | Tip | Açıklama |
|---|---|---|
| id | BIGINT UNSIGNED | Primary Key |
| playlist_id | BIGINT UNSIGNED | FK → muzibu_playlists(playlist_id) |
| playlistable_type | VARCHAR(50) | Morph alias: sector, radio, corporate, mood |
| playlistable_id | BIGINT UNSIGNED | İlgili entity'nin ID'si |
| position | INT UNSIGNED | Sıralama (varsayılan: 0) |
| created_at | TIMESTAMP | Oluşturulma tarihi |
| updated_at | TIMESTAMP | Güncellenme tarihi |
Morph map: Modules/Muzibu/Providers/MuzibuServiceProvider.php
-- Mevcut sector ilişkileri SELECT COUNT(*) FROM muzibu_playlist_sector; -- Mevcut radio ilişkileri SELECT COUNT(*) FROM muzibu_playlist_radio; -- Yeni tabloda ne var? SELECT playlistable_type, COUNT(*) FROM muzibu_playlistables GROUP BY playlistable_type;
INSERT INTO muzibu_playlistables
(playlist_id, playlistable_type, playlistable_id, position, created_at, updated_at)
SELECT
playlist_id,
'sector' as playlistable_type,
sector_id as playlistable_id,
0 as position,
NOW() as created_at,
NOW() as updated_at
FROM muzibu_playlist_sector
ON DUPLICATE KEY UPDATE updated_at = NOW();
INSERT INTO muzibu_playlistables
(playlist_id, playlistable_type, playlistable_id, position, created_at, updated_at)
SELECT
playlist_id,
'radio' as playlistable_type,
radio_id as playlistable_id,
0 as position,
NOW() as created_at,
NOW() as updated_at
FROM muzibu_playlist_radio
ON DUPLICATE KEY UPDATE updated_at = NOW();
-- Örnek: Playlist 5'i Corporate 2 ve 3'e dağıt
INSERT INTO muzibu_playlistables
(playlist_id, playlistable_type, playlistable_id, position, created_at, updated_at)
VALUES
(5, 'corporate', 2, 0, NOW(), NOW()),
(5, 'corporate', 3, 1, NOW(), NOW());
-- Toplam kontrol
SELECT
playlistable_type,
COUNT(*) as count,
COUNT(DISTINCT playlist_id) as unique_playlists
FROM muzibu_playlistables
GROUP BY playlistable_type;
-- Örnek playlist'in tüm dağıtımları
SELECT * FROM muzibu_playlistables WHERE playlist_id = 5;
// Tüm dağıtımları getir
$playlist->getAllDistributions();
// Return: ['sectors' => [1,2], 'radios' => [3], 'corporates' => [5,6]]
// Belirli bir entity type'a dağıt
$playlist->distributeToEntity('corporate', 5);
$playlist->distributeToEntity('sector', 3);
// Entity'den kaldır
$playlist->removeFromEntity('corporate', 5);
// Sync (tamamen değiştir)
$playlist->syncDistribution('corporate', [1, 2, 3]);
// Polymorphic relations (Eloquent)
$playlist->distributedToSectors;
$playlist->distributedToRadios;
$playlist->distributedToCorporates;
// Sector, Radio, Corporate modellerinde use HasPlaylistDistribution; // Bu entity'e dağıtılmış playlist'ler $sector->playlists; $corporate->activePlaylists; $radio->publicPlaylists; // Playlist sayısı $corporate->playlists_count; // Playlist ekle/çıkar $corporate->attachPlaylist($playlist); $corporate->detachPlaylist($playlist); $corporate->syncPlaylists([1, 2, 3]);
php artisan config:clear