Я создал пользовательское правило проверки fiveMaxThemesChoice
, которое состоит в том, что, как следует из названия, оно ограничивает пользователя (Etudiant
) максимальным выбором 5 themes
в приложении, которое я создаю. Это логика ниже для EtudiantsChoixTheme
Eloquent, где я регистрирую варианты:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use App\EtudiantsChoixTheme;
class fiveMaxThemesChoice implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$choixEtudiants = EtudiantsChoixTheme::all();
foreach ($choixEtudiants as $choixEtudiant) {
$IdEtudiantOccurences = count($choixEtudiants->where('idEtudiant', auth()->user()->id));
if($IdEtudiantOccurences <= 5){
return true;
}
else{
return false;
}
}
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'You have already chosen a maximum of 5 themes.';
}
}
Когда в таблице есть хотя бы 1 запись, это работает. Проблема состоит в том, что когда таблица пуста, возвращается сообщение об ошибке проверки, даже если в таблице еще нет записей, поэтому не максимум 5 (поэтому <= 5
должно быть правильным),Почему это не работает?
Я пробовал с другим синтаксисом:
$IdEtudiantOccurences = count($choixEtudiants->where('idEtudiant', auth()->user()->id)->first());
$IdEtudiantOccurences = $choixEtudiants->where('idEtudiant', auth()->user()->id)->first()->count();
$IdEtudiantOccurences = $choixEtudiants->where('idEtudiant', auth()->user()->id)->count();
Та же проблема сохраняется, когда таблица пуста. У кого-нибудь есть представление о том, в чем здесь может быть проблема? Любая помощь или предложение приветствуется