有问题要输出要查看的关系数据。 错误消息是:“尝试获取非对象视图的属性”。
作为解释,所有任务都依赖于工作。 所以任务属于Job和Job有很多任务。 我在模型中拥有所有关系并在Tinker中测试一切正常。
在我的视图中,我输出每个任务名称和作业名称
@foreach ($tasks as $task)
<div class="list-item">
<span class="item-name">{{ $task->job->name }}
<span class="item-name">{{ $task->name}} </span>
</div>
@endforeach
我的TaskController的索引函数:
public function index(Request $request)
{
$label = Label::all();
$user = User::all();
$task = Task::orderBy('duedate')->get();
$team = Team::all();
$customer = Customer::all();
$status = Status::all();
$job = Job::all();
return view('tasks.index')->with([
'tasks' => $task,
'teams' => $team,
'customers' => $customer,
'labels' => $label,
'users' => $user,
'jobs' => $job,
'statuses' => $status,
]);
}
tinker的表架构/输出
id: 1,
assigned_user_id: 1,
team_id: 4,
name: "Label many to many ",
duration: 2,
created_at: "2016-06-16 14:50:57",
updated_at: "2016-07-05 09:10:34",
job_id: 1,
duedate: "0000-00-00 00:00:00",
status_id: 3,
job: App\Job {#702
id: 1,
name: "quia",
jobnumber: "8076",
customer_id: 2,
status_id: 0,
created_at: null,
updated_at: null,
},
user: null,
关系
**工作模式**
class Job extends Model
{
protected $fillable = ['name', 'jobnumber', 'customer_id', 'status_id'];
/**
* Get all Task for Job
*/
public function task()
{
return $this->hasMany(Task::class);
}
任务模型
public function job()
{
return $this->belongsTo(Job::class);
}
希望你能帮助我,谢谢!
答案 0 :(得分:1)
参考你的回答:
在数据库中,某些任务条目的job_id为无现有作业
您可以使用has
方法根据关系的存在来限制结果。请参阅querying relationship absence的文档
$task=Task::orderBy('duedate')->has('job')->get();
答案 1 :(得分:1)
当您尝试打印不存在的模型值时,会发生这种错误。尝试使用{{isset($task->job->name)?$task->job->name:'Task without Job'}}
打印并检查输出内容。
答案 2 :(得分:0)
在尝试访问其值之前,您未在$task
上加载“作业”关系:
public function index(Request $request)
{
$label = Label::all();
$user = User::all();
$task = Task::with('job')->orderBy('duedate')->get(); // loading the relationship
$team = Team::all();
$customer = Customer::all();
$status = Status::all();
$job = Job::all();
return view('tasks.index')->with([
'tasks' => $task,
'teams' => $team,
'customers' => $customer,
'labels' => $label,
'users' => $user,
'jobs' => $job,
'statuses' => $status,
]);
}
答案 3 :(得分:0)
找到解决方案。
在DB中,一些Task条目有一个job_id到一个没有现有的Job,就是这样。