Проблема с перезаписью метода User3 :: all () в режиме пользователя - PullRequest
0 голосов
/ 13 июня 2019

У меня есть пользовательская модель как:

<?php
 namespace App;
 use App\User;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Notifications\Notifiable;
 use Illuminate\Support\Facades\Notification;
 use Illuminate\Notifications\RoutesNotifications;
 use Notifications\EmailClientOfAccount;

class User3 extends User
{
use Notifiable;
public $emailList;

protected $fillable = [
    'name', 'email',
];

public function __construct($emails)
{
    $this->emailList = $emails;

}

public  function getEmailList()
{
     return $this->emailList;
}
public static function all(array $columns=[])
{
    return $emailList;
}
public function routeNotificationForMail($notification)
{
    return $this->email;
}
}

Затем и в контроллере:

$collection = collect([ 
[ 'name' => 'user1', 'email' => 'user1@gmail.com', ], [ 'name' => 'user2', 
'email' => 'user2@gmail.com', ], [ 'name' => 'user1000', 'email' => 
'user1000@gmail.com', ],
 ]);

Второй этап: $ u4 = new User3 ($ collection);когда я использую:

dd($u4::all());

Это показывает ниже ошибку: ErrorException: Объявление App \ User3 :: all (array $ columns = Array) должно быть совместимо с Illuminate \ Database \ Eloquent \ Model :: all ($ columns = Array)

Я очень стараюсь решить, но не очень, спасибо за любую помощь,

1 Ответ

0 голосов
/ 13 июня 2019

ссылка из: Ошибка Laravel "Объявление модели / имя_модели должно быть совместимо с Illuminate \ Database \ Eloquent \ Model"

При переопределении метода из родительского класса - подписьМетод должен быть точно таким же с точки зрения параметров и их типов

В родительском классе для обоих атрибутов $ attribute и $ options задано значение типа array, поэтому вы также должны установить их в своем классе

namespace App\Models;

class User extends \Illuminate\Database\Eloquent\Model {
    ...
    public function update(array $attributes = [], array $options = []) {
       // ... your implementation
       return parent::update($attributes, $options);
    }
    ...
}

Ниже показано сообщение об ошибке: ErrorException: объявление приложения \ User3 :: all (массив $ columns = Array) должно быть совместимо с Illuminate \ Database \ Eloquent \ Model ::все ($ columns = Array) Проверьте это зелье.они не одинаковы.Может быть, это причина.сосредоточиться на этом может вам помочь.

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