复杂雄辩的东西

时间:2014-12-15 14:27:26

标签: php mysql laravel laravel-4 eloquent

我一直在努力解决这个问题。我一直在阅读关于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();

1 个答案:

答案 0 :(得分:0)

有时像Eloquent这样的ORM无法从原始SQL语句中实现您想要的功能。有时您需要使用与ORM vs SQL不同的解决方案。

查看您的查询 - 让2-3个不同的ORM模型执行查询的不同方面,并通过关系链接它们可能是有意义的。

但是,根据功能 - 在程序中对特定用例使用SQL语句不一定有问题。