laravel的逻辑问题
使用laravel 8 的时候,遇到逻辑问题
网页报错:Attempt to read property “name” on null
问题出在了这一步
{{ $job->getAssignedToForUser($user) }}
相关的文件有三个model: User, Company 和 Job
class User extends Authenticatable
{
......
public function company()
{
return $this->belongsTo('App\Models\Company')->withTrashed();
}
public function job()
{
return $this->hasMany('App\Models\Job');
}
......
}
class Company extends Model
{
......
public function jobAssignments()
{
return $this->hasMany('App\Models\Job');
}
.....
}
class Job extends Model
{
......
public function getAssignedToForUser($user)
{
if ($this->child) {
return $this->child->company->name;
}
return $this->user->name;
}
public function company()
{
return $this->belongsTo('App\Models\Company');
}
public function user()
{
return $this->belongsTo('App\Models\User');
}
......
}
一个controller:DashboardController
.....
public function index(Request $request)
{
$user = $request->user();
$company = $user->company;
$jobOwner = $request->input('job_owner', 'me');
if ($jobOwner == 'all') {
$jobProvider = $user->company;
} else {
$jobProvider = $user;
}
$upcomingJobs = $jobProvider->jobAssignments()
->where('status', JobAssignment::STATUS_ASSIGNED)
->whereHas('job', function ($query) {
$query->where(function ($query) {
$query
->whereNotNull('confirmed_start_date')
->where('confirmed_start_date', '>=', Carbon::today());
});
})
->get();
return view('dashboard.index', [
'jobOwner' => $jobOwner,
'upcoming' => $upcomingJob,
'user' => $user,
]);
}
当查看个别用户的jobs的时候,没有问题,可是当查看Company的All Jobs的时候,$this->child->company给出null,但$this->child是一个job instance。
希望有大神指点一下。
推荐文章: