首页 > 解决方案 > 只获取一列并使用 laravel 中的“with()”函数为该列创建一个别名

问题描述

我有两张桌子,JobOrderJob。我正在使用一对多的关系。

一个Job可以有很多JobOrder,一个JobOrder只属于一个Job

工作订单模型:

public function job()
{
    return $this->belongsTo(Job::class);
}

控制器:

public function getAllJobOrder()
{
    $results = JobOrder::with('job')->get();
    return $results;
}

上面的代码返回如下数据:

在此处输入图像描述

我只想获取job->position并创建一个别名,如下所示: 在此处输入图像描述

我实际上可以使用上图实现返回,withCount但我认为这不是正确的方法。

public function getAllJobOrder()
{
    $results = JobOrder::withCount(['job AS position' => function ($q) {
            $q->select('position');
        }])->get();
    return $results;
}

除了使用还有其他方法withCount吗?

标签: laravellaravel-5eloquent

解决方案


试试这个:

控制器

public function getAllJobOrder()
{
    $results = JobOrder::with('job')->get();
    foreach($results as $result){
       $result->position = $result->job->position;
       unset($result->job);
    } 
    return $results;
}

推荐阅读