我一直在努力解决这个问题。我一直在阅读关于Eloquent的文章并且非常努力地理解它,但我尝试的任何东西似乎都没有用。
这是我完美运行的MYSQL查询:
SELECT jobs.id,
jobs.title,
application_statuses.description,
fee,
candidates.f_name,
candidates.l_name,
clients.name
FROM jobs
JOIN applications ON jobs.id = job_id
JOIN candidates ON candidate_id = candidates.id
JOIN application_statuses ON applications.status_id = application_statuses.id
JOIN clients ON client_id = clients.id
WHERE applications.status_id IN (3,4,5)
ORDER BY applications.status_id desc;
我已经在Laravel中创建了模型,但是我无法获得使用此原始查询获得的结果。
如果可能的话,有人会指引我到某个地方解释这种事情(即多个连接,并从所有表中输出数据。),或者如果不是太多就帮我解决困境工作?
我试图在没有DB的情况下这样做:RAW
请注意。我没有太多指向我的模型和查询,因为它只是一个巨大的混乱,我一直在删除和重新创建。
这是我的代码:
class PivotApplication extends Eloquent {
protected $guarded = ['id'];
protected $table = 'applications';
public function applicationStatus()
{
return $this->belongsTo("ApplicationStatus");
}
public function candidates()
{
return $this->belongsToMany("Candidate", "candidate_id");
}
}
class ApplicationStatus extends Eloquent {
protected $guarded = ['id'];
protected $table = 'application_statuses';
public function pivotApplication()
{
return $this->belongsToMany("PivotApplication");
}
}
class PipelineController extends \BaseController {
function __construct(Job $job, ApplicationStatus $application_status, PivotApplication $pivotApplication)
{
}
public function index()
{
//$appStatuses = ApplicationStatus::whereIn
$applications = PivotApplication::with("applicationStatus")->whereIn("status_id", [3,4,5])
//->applicationStatus()
->get();
//->toSql();
//dd(DB::getQueryLog());
return $applications;
die();
答案 0 :(得分:0)
有时像Eloquent这样的ORM无法从原始SQL语句中实现您想要的功能。有时您需要使用与ORM vs SQL不同的解决方案。
查看您的查询 - 让2-3个不同的ORM模型执行查询的不同方面,并通过关系链接它们可能是有意义的。
但是,根据功能 - 在程序中对特定用例使用SQL语句不一定有问题。