Laravel4.2查询三个表之间的问题

时间:2015-05-16 11:52:42

标签: php mysql laravel-4 eloquent laravel-5

数据库表

employers                        
id | username | password    

jobdetails
id | employer_id | title

empcompanies
id | employer_id | company_name

JobDetail.php // model

public function employer()
{
    return $this->belongsTo('Employer');
}

EmpCompany.php // model

public function employer()
{
    return $this->belongsTo('Employer');
} 

Employer.php // model

public function empcompany()
{
    return $this->belongsTo('EmpCompany');
}

public function jobdetails()
{
    return $this->belongsToMany('JobDetail');
}

//控制器文件

public function getApplyJobs($id)
{
    $jobs = JobDetail::where('id', '=', $id)->get();
    return View::make('home.apply')->with(compact('jobs'));
}  

// view.blade.php文件

@foreach($jobs as $job)
  @foreach($job->empcompany() as $emp)
    <td {{ $emp->company_name }}</td>
  @endforeach
@endforeach

//这里$ id是jobdetails id,它工作并从jo​​bdetails表中获取所有数据。我的问题是 - 如何从emp公司展示company_name。我尝试了这些代码,但它没有显示company_name,它显示为空白。我正在使用Laravel4.2请帮助..

2 个答案:

答案 0 :(得分:1)

如果我没有弄错,那一定是你的答案:

JobDetails.php //型号

中的

public function empcompany()
    {
        return $this->belongsTo('EmpCompany','employer_id','employer_id');
    }

并在 EmpCompany.php // model

public function jobdetails()
{
    return $this->hasMany('JobDetail','employer_id','employer_id');
}

// 控制器文件

$jobs = JobDetail::where('id','=',$id)->with('empcompany')->get();

return View::make('view')->with('jobs',$jobs);

view.blade.php

@foreach($jobs as $job)
        <td>{{$job->empcompany->company_name}}</td>
@endforeach

试试希望它有效

答案 1 :(得分:0)

你的控制器功能应该是

len(self._data)

然后使用

进行迭代
public function getApplyJobs($id)
{
$jobs = JobDetail::where('id', '=', $id)->with('empcompanies')->get();
return View::make('home.apply')->with(compact('jobs'));
}  

还确保你在表格中有正确的关系,我没有看到你的模特,因为我相信这些很好