【发布时间】:2019-05-07 09:52:12
【问题描述】:
我正在学习 Laravel,而且总体上是真正的 OOP。我关注了几个 YouTube 教程系列,教你在 Laravel 中创建博客。
我正在为一家啤酒厂构建一个任务应用程序,并且我正在尝试定义用户和任务之间的关系。所以我有两个模型:User.php 和Task.php。我在 hasMany 任务关系中定义用户没有问题,并且相应地,任务属于用户。我感到困惑的是,我也想让用户也属于该任务。我有两个 MySQL 列,一个标题为“user_id”,另一个标题为“user_assigned_id”。我想要的是一个用户有很多任务,但一个任务也有一个分配的用户,这个想法是创建任务的用户可能会将任务分配给另一个用户。我找到了几个关于在三个模型之间创建关系的教程,例如一个用户拥有多条消息,但只有一个地址,所以我认为我可以将两个模型视为三个模型并将用户模型连接回hasOne 关系中的 Task 模型,但我很难将其传递给 Controller 和 View。
这是每个文件中的相关代码:
用户.php
public function tasks()
{
return $this->hasMany('App\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);
}
我在 Controller 中有点转身,所以我不确定我是否在上面搞砸了。基本上,我从登录用户拥有的任务中获取结果,但未分配给登录用户。
【问题讨论】:
标签: laravel oop laravel-5 eloquent relationship