Красноречивое отношение hasManyThrough / имеет много - PullRequest
0 голосов
/ 13 мая 2019

Я просто хочу сделать «простой» запрос с помощью eloquent.

Хорошо, у меня есть 3 модели. (User, Project и TimeEntries).

Пользователь может работать над множеством проектов. Он может делать некоторые записи времени, записи времени принадлежат проекту.

Итак, проблема в том, что у меня есть массив идентификаторов пользователей. Я хотел бы сделать красноречивый запрос, который содержит коллекцию модели User, и в этой коллекции я хотел бы иметь все проекты, в которых он участвовал, и общее количество часов (сумма часов в столбцах в таблице time_entries)

User.php

public function projects()
{
    return $this->belongsToMany('App\Model\Project', 'time_entries');
}

public function time_entries()
{
    return $this->hasMany('App\Model\TimeEntries');
}

Project.php

public function timeEntries()
{
    return $this->hasMany('App\Model\TimeEntries');
}

public function users()
{
    return $this->belongsToMany(User::class, 'time_entries');
}

TimeEntries.php

public function user() 
{
    return $this->belongsTo( 'App\Model\User' );
}

public function project() 
{
    return $this->belongsTo( 'App\Model\Project','project_id' );
}

Я сделал это, но он не работает, у меня есть коллекции пользователей с проектами, в которых он участвовал, но не сумма часов. (whereBetween просто я хочу, чтобы все записи времени в этом интервале.)

$t = User::with(['projects', 'time_entries' => function ($query) use ($request) {
    $query->whereBetween('spent_on', [($request->input('debut')), ($request->input('fin'))]);
}])->find($array_of_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...