比较两个不同表中两个不同的列和使用laravel 5.4

问题描述:

ORM的关系,我有两个车型之一是公司,另一种是采访或者从表显示其他列的数据。 公司表主键是Company_details_id并且该键用作的外键在采访表中使用f_company_id比较两个不同表中两个不同的列和使用laravel 5.4

现在我的问题是,如何既键值,如果我的条件为真,它将从公司表返回列COMPANY_NAME比较。

我公司型号:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 


class Companies extends Model 
{ 
protected $table = 'company_details'; 

    protected $primaryKey = 'company_details_id'; 


    public function interviews() 
    { 
     return $this->hasmany('App\Interviews', 'f_company_id'); 
    } 


} 

我的访谈模式:

<?php 

use Illuminate\Database\Eloquent\Model; 


class Interviews extends Model 
{ 
protected $table = 'interview_schedule'; 

protected $primaryKey ='schedule_id'; 



public function getCompanies() 
    { 
     return $this->belongsto('App/Companies'); 
    } 


} 

我的控制器:

<?php 

namespace App\Http\Controllers; 


use Illuminate\Support\Facades\Auth; 
use App\Http\Controllers\Controller; 
use App\Companies; 
use App\Interviews; 


class PracticeController extends Controller 

{ 
    public function getAll() 
    { 

    $getcompany=Companies::where('Companies.company_details_id','=','Interviews.f_company_id') 
       ->select('company_name')->get(); 

     echo $getcompany; 

    } 


} 

请大家好,我在laravel雄辩ORM使用需要一个明确的答案5.4

这是不完全清楚你想要达到什么,但这里有一些指导原则。

首先,您似乎有“一家公司可以有很多采访”和“一次采访只能属于一家公司”作为您的关系。你已经在模型中正确地设置了它们。

因为你的关系,你的“GETALL”查询应该仅仅是:

$companies = Company::with(['interviews'])->select(['company_name'])->get(); 

那么你可以通过他们循环相对轻松:

foreach($companies as $company) 
{ 
    foreach($company->interviews as $interview) { 
    // Do something with $interview 
    } 
} 

使用调用关系“采访”根据假定的密钥自然执行两个表之间的where子句。由于您似乎有非标准的主键,您需要更详细地定义hasMany和belongsTo。

public function interviews() 
{ 
    return $this->hasMany(Interview::class, 'f_company_id', 'company_details_id'); 
} 

我建议打电话给您的模型公司和面试,而不是复数版本。这是因为一个单独的记录涉及一家公司(根据你写的内容做出假设)。从长远来看,你会发现它不那么令人困惑。

我想你可以试试这个:

DB::table('interview_schedule') 
->select('company.company_name') 
->join('company','company_details.company_details_id','=','interview_schedule.f_company_id') 
->where('interview_schedule.f_company_id','=','company.company_details_id') 
->get(); 

希望这对你的工作!