Допустим, мы используем построитель запросов Laravel:
$users = DB::table('really_long_table_name')
->select('really_long_table_name.id')
->get();
Я ищу эквивалент этого SQL:
really_long_table_name AS short_name
Это было бы особенно полезно, когда мне нужно набрать много селекторов и типов (или, как правило, я включаю псевдоним в псевдоним столбца выбора, и он используется в массиве результатов). Без каких-либо псевдонимов таблиц для меня гораздо больше печатать, и все становится менее читабельным. Не можете найти ответ в документах Laravel, какие-либо идеи?
protected $table = "books";
), тогда как я могу создать псевдонимы? (например , генерируемый SQL:... FROM books AS A ...
)protected $table = 'really_long_table_name AS short_name';
но это не сработает на вставках, хотя. Также может нарушить отношения запросов. Я использую Lumen и шаблон DDD / Repository, чтобы полностью избежать Eloquent.Чтобы использовать псевдонимы в красноречивых моделях, измените ваш код следующим образом:
Это автоматически добавит префикс таблицы к именам таблиц и вернет экземпляр
Items
модели. не голый результат запроса. Добавление неDB::raw
позволяет laravel добавлять префиксы таблиц к псевдонимам.источник
Unknown column 'table_alias.deleted_at'
->withTrashed()
и->whereNull('table_alias.deleted_at')
Вот как это можно сделать. Я приведу пример с присоединением, чтобы кому-то стало супер ясно.
Надеюсь это поможет.
источник
Использовать в Eloquent. Добавьте поверх вашей модели
protected $table = 'table_name as alias'
..то использовать в вашем запросе, как
ModelName::query()->select(alias.id, alias.name)
источник
Вы можете использовать меньше кода, написав это:
И, конечно, если вы хотите выбрать больше полей, просто напишите «,» и добавьте еще:
Это очень удобно, когда вы используете сложный запрос
источник
То же, что и ответ AMIB, для ошибки мягкого удаления "Неизвестный столбец 'table_alias.deleted_at'", просто добавьте, а
->withTrashed()
затем обработайте его как->whereRaw('items_alias.deleted_at IS NULL')
источник