Ошибка отношения Laravel: неопределенное свойство: Illuminate Database Eloquent Collection :: $ id в строке 1

У меня две модели Companyи Employeeс соответствующими таблицами в MySQL companies, и employees.

У меня эти отношения «Много-к-одному» определены:

В Companyмодели:

 public function employees(){
        return $this->hasMany('AppEmployee','company');
    }

В Employeeмодели:

public function company(){
        return $this->belongsTo('AppCompany','company');
    }

companyвыше в методах - это неподписанный целочисленный внешний ключ, присутствующий в employeesтаблице.

В tinker я попытался $company->employees;, который возвращает список всех сотрудников в выбранной компании. Однако, когда я делаю, $company->employees->idчтобы получить идентификаторы всех сотрудников, а не других строк, это дает мне ошибку:

PHP error:  Undefined property: IlluminateDatabaseEloquentCollection::$id on line 1

php,mysql,laravel,

3

Ответов: 1


3 принят

Хорошо $company->employeesвозвращает коллекцию, ->idне является свойством в коллекции, вот почему вы получаете ошибку.

Если вы хотите получить массив, содержащий все идентификаторы ваших сотрудников, вы можете сделать это:

$company->employees()->lists('id');

Если вы читаете это и используете laravel, ^5.3.*тогда ответ будет следующим:

$company->employees()->pluck('id');

Это вернет коллекцию со всеми идентификаторами, если вы хотите, чтобы это был массив, который вы можете связать ->toArray()позади него.

PHP, MySQL, Laravel,
Похожие вопросы