$placeholders = substr(str_repeat('?,', count($ids)), 0, -1);
class UniqueAmongActiveClients implements \Illuminate\Contracts\Validation\Rule
{
public function passes($attribute, $value): bool
{
return Client::shouldBeUniqueAndItIs($attribute, $value, auth()->id());
}
}
class Client extends Eloquent
{
public static function shouldBeUniqueAndItIs(string $attribute, $value, ?int $excludedId = null): bool
{
$query = static::withoutTrashed()->where($attribute, $value);
if ($excludedId) {
$query->where('id', '<>', $excludedId);
}
return $query->doesntExist();
}
}
deleted_at
заменять костылями, как советуют в соседних ответах, конечно, не нужно. Я знаю лишь метод для того чтобы составить структуру данных (массив или объект) из таблицы:Вы ошибаетесь, в$results = $pdo->query("SELECT * FROM user"); $rows = $results->fetch(PDO::FETCH_ASSOC);
$rows
будет только одна строка, а не все. Действительно ли это работает?
Почему MySQL сам не делает такую оптимизацию?
И действительно ли в запросе без user_id мой индекс не используется?
app('events')->listen('eloquent.saved: *', ...);
app('events')->listen('eloquent.deleted: *', ...);
app('events')->listen(['eloquent.pivotAttached: *', 'eloquent.pivotDetached: *', 'eloquent.pivotUpdated: *'], ...);
Или уже для такого количества записей лучше использовать аналоги PhpMyAdmin? MongoDB - может?Судя по такой постановке вопроса, вам для начала нужно разобраться чем PhpMyAdmin отличается от Mysql.
^[A-Z]+.*[A-Z].*\d+$
Да и вообще всегда сомневаюсь когда делать отдельную таблицу, а когда можно запихнуть всё в одно поле в одном из форматов, например, json или просто через запятую.Если структура данных вариативна (у мероприятия может не быть положения или их будет пять) и по ним не нужно будет осуществлять фильтрацию, то допустимо хранить сериализованно в одной колонке. Во всех остальных случаях лучше денормализовать.
уникальный индекс == обычный индекс + проверка уникальности.Именно так.