Основная проблема
Моя основная проблема заключается в том, что Laravel не совместима с подразделениями и не поддерживает их хорошо! < /p>
[*] Я использую ниже версии :
Laravel v10.16.1
[*] Php 8.1
я получил deleted_at , updated_at и create_at columns
< /li>
< /ul>
проблема с deleted_at < /code> < /h4>
Если я использую признак Soft Delete и хочу deleted_at для автоматического обработки, когда я использую подпрограммы, как ниже, он покажет мне ошибку:
Код: Выделить всё
class UserRepository {
...
public function getWhere(array $columns, Builder $where)
{
$query = $this->model
->newQuery()
->when($where, function (Builder $query) use ($where) {
$query->fromSub($where, 'sub');
});
return $query->get($columns);
}
...
}
< /code>
ERROR: `'deleted_at' column does not exists`
< /code>
[b]Problematic query Example[/b]
SELECT * FROM (SELECT * FROM `users` WHERE `name`='john') AS `sub` WHERE `users`.`deleted_at` IS NULL
< /code>
In above query, deleted_at
Код: Выделить всё
class UserRepository {
...
public function getWhere(array $columns, Builder $where)
{
$prefix = $this->model->getTable();
$query = $this->model
->newQuery()
->when($where, function (Builder $query) use ($where, &$prefix) {
$prefix = 'sub';
$query->fromSub($where, $prefix);
});
$query->whereNull($prefix . '.deleted_at');
return $query->get($columns);
}
...
}
< /code>
EDIT
I changed my example because I was doing wrong for update
Подробнее здесь: https://stackoverflow.com/questions/768 ... subqueries