Запрос левого сукения SQL с использованием синтаксиса Laravel, показывающий ошибку неизвестного столбца [Закрыто]MySql

Форум по Mysql
Ответить
Anonymous
 Запрос левого сукения SQL с использованием синтаксиса Laravel, показывающий ошибку неизвестного столбца [Закрыто]

Сообщение Anonymous »

Я получаю приведенную ниже ошибку: < /p>

Код: Выделить всё

Illuminate\Database\QueryException

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'matches.male_email' in 'order clause' (Connection: mysql, SQL: select `matches`.*, `males`.`email` as `male_email`,
`females`.`email` as `female_email`, `places`.`name` as `place_name` from `matches` left join `users` as `males` on `males`.`id` = `matches`.`male_id` and `males`.`gender` = male
left join `users` as `females` on `females`.`id` = `matches`.`female_id` and `females`.`gender` = female left join `places` on `places`.`id` = `matches`.`place_id` where `matches`.`deleted_at` is null order by `matches`.`male_email` asc limit 20 offset 0)

GET 127.0.0.1:8000
PHP 8.2.12  —  Laravel 12.19.3
Метод репозитория:

Код: Выделить всё

public function get(Request $request): LengthAwarePaginator
{
$limit = CommonComponent::newListLimit(query: $request);

$builder = $this->matchModel
->leftJoin(
'users as males',
fn ($join) =>
$join->on('males.id', '=', 'matches.male_id')
->where('males.gender', '=', Gender::MALE)
)
->leftJoin(
'users as females',
fn ($join) =>
$join->on('females.id', '=', 'matches.female_id')
->where('females.gender', '=', Gender::FEMALE)
)
->leftJoin('places', 'places.id', '=', 'matches.place_id')
->select(
'matches.*',
'males.email  as male_email',
'females.email as female_email',
'places.name  as place_name'
);

if (!empty($request['free_word'])) {
$builder->where(
fn ($q) =>
$q->where('males.email',   'like', '%' . $request['free_word'] . '%')
->orWhere('females.email', 'like', '%' . $request['free_word'] . '%')
);
}

$items = $builder
->with('female', 'male', 'place')
->sortable([
'datetime'     => 'desc',
'status'       => 'asc',
'male_email'   => 'asc',
'female_email' => 'asc',
'place_name'   => 'asc',
])
->paginate($limit);
Методы модели:
public function scopeMaleEmailSortable($query, $direction)
{
return $query->orderBy('males.email', $direction);
}

public function scopeFemaleEmailSortable($query, $direction)
{
return $query->orderBy('females.email', $direction);
}

public function scopePlaceNameSortable($query, $direction)
{
return $query->orderBy('places.name', $direction);
< /code>
Я не могу это исправить - кто -нибудь может мне помочь? Я пробовал много способов. Я получаю ошибку с левым соединением, которая показывает «неизвестный столбец», хотя я включил все. Столбец не найден: 1054 Неизвестный столбец 'matches.male_email' в «пункте заказа».


Подробнее здесь: https://stackoverflow.com/questions/796 ... own-column
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»