Laravel: Нестатический метод App \ Models \ Employee :: getEmployeeName () не должен вызываться статически, предполагая $ this из несовместимого контекста - PullRequest
0 голосов
/ 05 марта 2019

Мне нужно использовать функцию Model в контроллере, но получить указанную выше ошибку:

Нестатический метод App \ Models \ Employee :: getEmployeeName () не должен вызываться статически, предполагая $ this из несовместимогоcontext

Моя модель:

 <?php namespace App\Models;


  use Illuminate\Database\Eloquent\Model;



class Employee extends Model 
{



protected $table = ‘BLABLA’;


    public function getEmployeeName()

        {
            if ($this->EmployeeName){

                return "{$this->EmployeeName}";
                }

        return null;

        }

}

Мой контроллер:

use Auth;

use DB;

use App\Models\Bookings;

use App\Models\User;

use App\Models\Employee;

use Illuminate\Http\Request;

class BookingsController extends Controller {

    public function postBooking(Request $request){

     $employee=Employee::getEmployeeName()->get();

     dd($employee);

           }



     }

Ответы [ 3 ]

1 голос
/ 05 марта 2019

getEmployeeName - это метод объекта Employee.Он должен быть вызван для экземпляра Employee.В вашем случае вам нужно будет получить экземпляр Employee перед вызовом этого метода.Возможно, с помощью employee_id, переданного с $request.

public function postBooking(Request $request) {

     $employee = Employee::findOrFail($request->input('employee_id'));

     dd($employee);

}

. Кроме того, getEmployeeName на данный момент не требуется, поскольку у вас уже есть объект Employee.Чтобы получить имя, достаточно вызвать атрибут:

$employee->name ИЛИ $employee->EmployeeName (как бы вы его ни назвали)

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

Это сработало

  $employee=Employee::first()->getEmployeeName();
0 голосов
/ 05 марта 2019

попробуйте это: в вашей модели

 public static function getEmployeeName()

        {
            if ($this->EmployeeName){

                return "{$this->EmployeeName}";
                }

        return null;

        }

в вашем контроллере:

 $employee=Employee::getEmployeeName();

но если EmployeeName является атрибутом, лучше сделать это:

public function getEmployeeNameAttribute()
{
    if($this->EmployeeName){return $this->EmployeeName;}
}

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

$employees= Employee::find(x);
$employees->employee_name ;

$ это имеет значение, если ваша модель содержит набор записей в обоих решениях

надеюсь, я помогу вам

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