Так я создал свою базу данных (каждый сотрудник может иметь несколько названий):
CREATE TABLE employees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
CREATE TABLE titles (
emp_no INT NOT NULL,
title VARCHAR(50) NOT NULL,
from_date DATE NOT NULL,
to_date DATE,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,title, from_date)
);
Это соответствующие модели:
class employee extends Model
{
protected $primaryKey = 'emp_no';
public $incrementing = false;
protected $connection = 'testMYSQL';
public function title()
{
return $this->hasMany('App\title', 'emp_no');
}
}
class title extends Model
{
protected $primaryKey = ['emp_no', 'title', 'from_date'];
public $incrementing = false;
protected $connection = 'testMYSQL';
public $timestamps = false;
public function employee()
{
return $this->belongsTo('App\employee', 'emp_no');
}
}
В моем контроллере я использовалмодели, которые я создал следующим образом:
return $employee = employee::find(1)->title;
Но я получаю эту ошибку для строки выше:
"Попытка получить свойство title для необъекта"
Обновление : хотя они работают нормально:
return $employee = employee::first()->title;
return $employee = title::first()->employee;
Я думаю, что отношения правильные, и проблема в том, что Laravel все еще не заметил, чтопервичный ключ - emp_no , а не id .Я изменил тип $ primaryKey с protected на public , но все равно получаю ту же ошибку.