Я просто хочу сделать «простой» запрос с помощью 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);