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。

希望有大神指点一下。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
lol173

想办法看下获取的sql,确保外键匹配对了

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!