Скажем, у меня есть 2 таблицы с такой колонкой:
table_a: (with a corresponding model TableA) id | (20+ other field) | deleted_at | created_at | updated_at table_b: (with a corresponding model TableB) id | a_id | ( 30+ other field ) | deleted_at | created_at | updated_at
Теперь я использую laravel и присоединяюсь к этому двум столам
$result = TableA::join('table_b', 'table_a.id', '=', 'table_b.a_id') ->where('table_b.created_at', '>=', date('Ym-d')) ->get();
Проблема в том, что я не могу использовать какое-либо поле table_b, когда имя столбца совпадает с таблицей_a. (т.е. id
, deleted_at
, created_at
и updated_at
)
Я сделал некоторый поиск, и из этого вопроса о stackoverflow я могу сделать:
$result = TableA::join('table_b', 'table_a.id', '=', 'table_b.a_id') ->where('table_b.created_at', '>=', date('Ym-d')) ->select('table_b.id as b_id', 'table_b.created_at as b_created_at') ->get();
Однако при использовании этого метода мне нужно добавить все имя столбца в оператор select, и это больно делать это в 50 + полях. Это функция экспорта, поэтому все поля необходимы. Есть ли способ сделать необходимое переименование без перечисления всех других полей, которые не нуждаются в переименовании для извлечения всех строк? Или есть способ, которым я могу получить всю строку без переименования?
PS Я использую laravel 4. Это старый проект, и обновление еще более болезненно, чем перечисление всех полей.