Я учу себя фреймворку и балуюсь Active Record.Я застрял с проблемой, которую легко решить с помощью необработанного SQL, и мне интересно, как лучше перенести ее на Active Record ...
У меня есть следующая схема базы данных ...
CREATE TABLE chats (
id int(11) DEFAULT NULL,
user_id int(11) DEFAULT NULL,
more longtext
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE statuses (
chat_id int(11) DEFAULT NULL,
user_id int(11) DEFAULT NULL,
is_read tinyint(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE users (
id int(11) DEFAULT NULL,
name varchar(255) DEFAULT NULL,
mail varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
И я хочу сделать следующее в Active Record, где 1 в соединении является текущим идентификатором пользователя ...
SELECT
c.*, s.is_read
FROM chats c
LEFT JOIN statuses s ON c.id = s.chat_id AND 1 = s.user_id
Как мне установить это отношение, чтобы яможет иметь простую переменную 'is read' в моем объекте чата?Я знаю, что могу сделать это, выполняя различную логику в моделях чата и состояния, которые у меня есть, но это кажется намного более беспорядочным?