У меня есть следующая ситуация в Laravel, просто представьте следующее:
task -([many-to-many]- task_user -[many-to-many])- user -[one-to-one]- info
Я могу перейти от задачи к пользователю, но, к сожалению, не могу получить информацию.
Кто-нибудь знает, что мне не хватает?
Модель: задача
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
public $table = "tasks";
public function taskuser(){
//task->task_user->user->info
return $this->belongsToMany(User::class,'task_user');
}
, когда я добавляю -> ownTo (Info :: class) к функции Taskuser Я получаю следующую ошибку:
Illuminate\Database\Eloquent\RelationNotFoundException
Call to undefined relationship [taskuser] on model [App\Models\Task].
Я определенно что-то упускаю, но что?
РЕДАКТИРОВАТЬ: информационная модель работает с пользователем как пользователь-> информация дает правильные результаты Модель пользователя:
public function info()
{
return $this->hasOne('App\Models\Info');
}
РЕДАКТИРОВАТЬ: контроллер
$task= Task::whereBetween('datetime',array($start,$end))->with('tasktype','taskuser')->get();
РЕДАКТИРОВАТЬ: соответствующие таблицы
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('username');
$table->rememberToken();
$table->timestamps();
Schema::create('infos', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned(); //internal id
$table->string('name');
#foreign references
$table->foreign('user_id')->references('id')->on('users');
Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->integer('task_types_id')->unsigned();
$table->string('title');
$table->datetime('datetime');
$table->integer('length');
$table->string('description')->nullable();
$table->integer('updated_by')->unsigned();
$table->timestamps();
#foreign references
$table->foreign('task_types_id')->references('id')->on('task_types');
$table->foreign('updated_by')->references('id')->on('users');
Schema::create('task_users', function (Blueprint $table) {
$table->integer('task_id')->unsigned();
$table->integer('user_id')->unsigned();
#foreign references
$table->foreign('task_id')->references('id')->on('tasks');
$table->foreign('user_id')->references('id')->on('users');