Php 比较两个不同表中的两个不同列,并显示其他列';使用laravel 5.4中的orm关系从任一表中删除数据
我有两种模式,一种是公司,另一种是面试。 companys表的主键是Company\u details\u id,该键用作面试表中Company\u id的外键 现在我的问题是如何比较这两个键值如果我的条件为真,它将从companys表返回列company_name 我的公司模式:Php 比较两个不同表中的两个不同列,并显示其他列';使用laravel 5.4中的orm关系从任一表中删除数据,php,mysql,laravel,laravel-5,orm,Php,Mysql,Laravel,Laravel 5,Orm,我有两种模式,一种是公司,另一种是面试。 companys表的主键是Company\u details\u id,该键用作面试表中Company\u id的外键 现在我的问题是如何比较这两个键值如果我的条件为真,它将从companys表返回列company_name 我的公司模式: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Companies extends Model { protect
<?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');
}
}
还不完全清楚您想要实现什么,但这里有一些指导原则
首先,你似乎有“一家公司可以有很多面试”和“一次面试只能属于一家公司”作为你的人际关系。大多数情况下,您已经在模型中正确设置了这些
由于您的关系,“getAll”查询应该是:
$companies = Company::with(['interviews'])->select(['company_name'])->get();
然后,您可以相对轻松地在它们之间循环:
foreach($companies as $company)
{
foreach($company->interviews as $interview) {
// Do something with $interview
}
}
使用with调用关系“访谈”,根据假定的键自然地执行两个表之间的所有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();
希望这项工作为你
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();