Параметр count () должен быть массивом или объектом, который реализует счетное в laravel - PullRequest
0 голосов
/ 27 октября 2018

Это код здесь:

protected function credentials(Request $request)
{
    $admin=admin::where('email',$request->email)->first();
    if(count($admin))
    {
       if($admin->status==0){
           return ['email'=>'inactive','password'=>'You are not an active person, Please contact to admin'];
           }
           else{
               return ['email'=>$request->email,'password'=>$request->password,'status'=>1];
           }
       }
       return $request->only($this->username(), 'password');
    }

Когда я запускаю код, эта ошибка становится:

"count (): параметр должен быть массивом или объектом, который реализует счетную"

Ответы [ 8 ]

0 голосов
/ 19 марта 2019

Это происходит из-за того, что в PHP 7.2 NULL в count () возвращает предупреждение. Вы можете попробовать изменить

count($admin)

до

count((is_countable($admin)?$admin:[]))
0 голосов
/ 07 января 2019

Используйте isset($admin->id) вместо count($admin)

Попробуйте:

protected function credentials(Request $request)
{
    $admin=admin::where('email',$request->email)->first();
    if(isset($admin->id)))
    {
       if($admin->status==0){
           return ['email'=>'inactive','password'=>'You are not an active person, Please contact to admin'];
           }
           else{
               return ['email'=>$request->email,'password'=>$request->password,'status'=>1];
           }
       }
       return $request->only($this->username(), 'password');
    }
0 голосов
/ 30 января 2019

добавьте свой контроллер в этот код:

 $user = User::where('email',$request->email)->first();
        if ($user){
            return redirect()->back()->with('errors','We cant find a user with that e-mail address.');
        }else{
            $user->password = bcrypt($request->new_password);
            $user->update();
            return redirect()->back()->with('success','Success');
        }
0 голосов
/ 27 октября 2018
Well,
$admin=Admin::where('email',$request->email)->first();
//It will always return an **object**.
And make sure you included Admin model in your controller like as.
Use App\Admin;
at the same time check that you will have to mention which field of table needs to be fillable like in your model such as 
protected $fillable = [
'first_name',
'last_name'
];

whatever data you will going to save in your database.
and then check object is null or not
I mean is.

if($admin && $admin!==null){
  //do whatver you want to do.
}
0 голосов
/ 27 октября 2018
$admin = null;
var_dump(count($admin));

output : Warning: count (): Параметр должен быть массивом или объектом, который реализует Countable в ... в строке 12 // с PHP 7.2

если условиедолжно быть как:

if(isset($admin) && count($admin))
0 голосов
/ 27 октября 2018

$admin переменная не является ни массивом, ни объектом, который реализует счетное.Когда вы используете first(), результатом будет объект модели, если найдена запись, иначе он будет нулевым.Для этого условия вы можете использовать:

if (!empty($admin)) {
    //
}

Просто замените if (count($admin)) на if (!empty($admin)).

. И когда вы используете метод get() для получения нескольких записей, вы можете проверить:

if ($admins->count() > 0) {
    //
}
0 голосов
/ 27 октября 2018

Обратите внимание, что здесь, когда вы используете метод count(), должен существовать счетный элемент, такой как массив или объект.

Admin::where('email',$request->email)->first();

Но метод first() дает вам один элемент, а неколлекция или массив.Метод get() возвращает вам счетную коллекцию с найденными элементами

Вместо использования счетчика вы можете напрямую проверить саму переменную, определена она или равна нулю

if($admin){
  // do something here
}

или вы можете использовать is_null()метод

if(!is_null($admin)){
  // do something here
}
0 голосов
/ 27 октября 2018

Вы должны проверить, является ли оно нулевым, а не счетным, потому что вы запрашиваете один результат с помощью first(), только это

if($admin)

сделает это.

, если вы используете return aсбор с использованием ->get(), тогда вы можете проверить $admin->count().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...