【问题标题】:Laravel4.2 Query Problems between three tablesLaravel 4.2 三表间查询问题
【发布时间】:2015-07-28 07:28:39
【问题描述】:

数据库表是

employers                        
id | username | password    

jobdetails
id | employer_id | title

empcompanies
id | employer_id | company_name

JobDetail.php // 模型

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

EmpCompany.php // 模型

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

Employer.php // 模型

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,它可以从 jobdetails 表中获取所有数据。我的问题是-如何从empcompanies 中显示company_name。我尝试了这些代码,但它没有显示公司名称,它显示为空白。我正在使用 Laravel4.2 请帮助..

【问题讨论】:

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


    【解决方案1】:

    如果我没记错的话,这一定是你的答案:

    在你的 JobDetails.php //Model

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

    在你的 EmpCompany.php // 模型中

    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
    

    试试这个希望它有效

    【讨论】:

    • @user267019 我不明白你关于员工模型的问题?我没有更改您的代码,只是修改了您的代码。
    【解决方案2】:

    你的控制器功能应该是

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

    然后使用

    进行迭代
    @foreach($jobs->empcompany as $emp)
    <td {{ $emp->company_name }}</td>
    @endforeach
    

    还要确保您在表格中具有正确的关系,我没有看到您的模型,因为我相信这些都很好

    【讨论】:

    • 它重新运行此错误:: 'BadMethodCallException' 并带有消息'调用未定义的方法 Illuminate\Database\Query\Builder::empcompanies()' @Khan Shahrukh
    • 它有效@grhnkdlk..thanks.. 但是雇主模型呢,你没有指定....现在我也编辑我的模型部分的问题,请看看现在我想展示公司名称,我该怎么办????
    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2015-01-16
    • 2015-08-02
    • 2017-09-11
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    相关资源
    最近更新 更多