繁体   English   中英

Laravel 数据库 Eloquent 左连接表

[英]Laravel Database Eloquent Left Join Table

嗨,我想问一下有没有办法将 2 个外键引用到 1 个主表 ID?

这是我的代码。

$job_postings = JobPosting::select(
    'job_postings.id as job_posting_id',
    'job_postings.qualifications',
    'job_postings.created_at',
    'job_postings.updated_at',
    'job_postings.created_by',
    'job_postings.approved_by',
    'dealerships.dealership_name',
    'departments.department_name',
    'positions.position_name',
    'users.name as created_by_name', (**This is the issue please help**)
    'users.name as approved_by_name', (**This is the issue please help**)
    DB::raw("case when job_postings.status = 0 then 'Pending' else 'Approved' end status"),
)
->leftJoin('dealerships', 'job_postings.dealership_id', '=', 'dealerships.id')
->leftJoin('departments', 'job_postings.department_id', '=', 'departments.id')
->leftJoin('positions', 'job_postings.position_id', '=', 'positions.id')
->leftJoin('users', 'job_postings.created_by', '=', 'users.id', 'job_postings.approved_by', '=', 'users.id')
->where('job_postings.id', $jp_id)
->get();

$data = [];
foreach($job_postings as $j => $job_posting){
    $data[] = [
        'job_posting_id'  => $job_posting->job_posting_id, 
        'dealership_name' => $job_posting->dealership_name,
        'department_name' => $job_posting->department_name,
        'position_name'   => $job_posting->position_name,
        'qualifications'  => $job_posting->qualifications,
        'status'          => $job_posting->status,
        'created_by'      => $job_posting->created_by_name,
        'approved_by'     => $job_posting->approved_by_name,
        'created_at'      => $job_posting->created_at->format('D, d M Y').date(' | h:i A', strtotime($job_posting->created_at)),
        'updated_at'      => $job_posting->updated_at->format('D, d M Y').date(' | h:i A', strtotime($job_posting->updated_at)),
    ];
}

最后左下加入

->leftJoin('users', 'job_postings.created_by', '=', 'users.id', 'job_postings.approved_by', '=', 'users.id')

allowed_by 是指向用户 ID 的外键,created_by 也是指向用户 ID 的外键。

我的目标是获取用户的姓名,但要单独引用。 这个比喻有点类似。

'users.name = created_by as created_by_name', 
'users.name = approved_by as approved_by_name', 

approved_by = user.id => user.name
created_by = users.id => user.name

谢谢。

leftJoin(users,job_postings.created_by,=,users.id, job_postings.approved_by, =, users.id)

尝试这个,

->leftJoin(users, function($join){ $join->on(users.id, =, job_postings.created_by); $join->on(users.id, =, job_postings.approved_by); })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM