Я изучаю Laravel, и действительно ООП в целом.Я следил за несколькими сериями руководств на YouTube, которые научили вас создавать блог в Laravel.
Я создаю приложение для пивоваренного завода и пытаюсь определить отношения между пользователями изадачи.Итак, у меня есть две модели: User.php и Task.php.У меня не было проблем с определением пользователя в отношении задач hasMany, и, наоборот, задача принадлежит пользователю.Что меня смущает, так это то, что я хотел бы, чтобы пользователь тоже относился к этой задаче.У меня есть два столбца MySQL, один с заголовком «user_id», а другой с «user_assigned_id».Я хочу, чтобы у пользователя было много задач, но у задачи также есть один назначенный пользователь, идея в том, чтобы пользователь, создавший задачу, мог назначить задачу другому пользователю.Я нашел несколько учебных пособий по созданию отношений между тремя моделями, например, пользователю, владеющему несколькими сообщениями, но имеющему только один адрес, поэтому я решил, что могу просто обработать две модели, как если бы они были тремя моделями, и подключить модель пользователя обратно кмодель задачи в отношении hasOne, но мне очень трудно передать ее в Controller и View.
Вот соответствующий код в каждом файле:
User.php
public function tasks()
{
return $this->hasMany('App\Task');
}
Task.php
public function user()
{
return $this->belongsTo('App\User');
}
// Added an user_assigned_id relationship
public function user_assigned()
{
return $this->hasOne('App\User', 'name', 'user_assigned_id');
}
DashboardController.php
public function index()
{
$user_id = auth()->user()->id;
$now = Carbon::now();
$tasks_assigned = Task::orderBy('date', 'asc')->whereDate('date', '>=', $now)->where('user_assigned_id', '=', $user_id)->user_assigned()->where('name', '=', 1)->get();
$tasks_created = Task::orderBy('date', 'asc')->whereDate('date', '>=', $now)->where('user_id', '=', $user_id)->get();
return view('dashboard')->with('tasks_assigned', $tasks_assigned)->with('tasks_created', $tasks_created);
}
Я немного повернулся в контроллере, так что я неуверен, что я что-то там испортил.По сути, я получаю результаты от задач, принадлежащих зарегистрированному пользователю, но не назначенных зарегистрированному пользователю.