拉拉维尔 5.4 雄辩的关系排序



我有两个数据库表,称为可交付成果,deliverable_version。

可交付成果有很多Deliverable_Version。

可交付成果具有 id 列,模型具有获取最新版本的功能:

public function getRecentVersion()
    {
        $deliverable_version_max = $this->versions()->max('version');
        $deliverable_version = DeliverableVersion::where([
            'version'=>$deliverable_version_max,
            'deliverable_ID'=>$this->id,
        ])->first();
        return $deliverable_version;
    }

Deliverable_version表具有 ID、deliverable_ID、标题、消息、截止日期、版本、created_at updated_at。

我将如何执行我可以执行的操作:

    获取所有可交付结果
  1. 以及与可交付结果关联的最新版本。

  2. 按deliverable_version表的列对可交付结果进行排序 (updated_at(

  3. 对结果进行分页?

这是我的尝试,它不起作用,因为它在我加入表时选择所有版本,而不仅仅是最新版本:

$deliverables = Accounts::find($owner_account_ID)->deliverables();
    $deliverables = $deliverables->join('deliverable_version', 'deliverable.id', '=', 'deliverable_version.deliverable_ID');
    $deliverables = $deliverables->search($search);
    $deliverables = $deliverables->orderBy('deliverable_version.updated_at', 'desc');
    $deliverables = $deliverables->paginate(4);

任何帮助,不胜感激。谢谢。

in Accounts module add:
 public function deliverable_version(){
        return $this->hasMany('Appdeliverable_version');
    }
in controller:
    enter code here
$deliverables = Accounts::find($owner_account_ID)->deliverables()>with('deliverable_version');
foreach($deliverables as $deliverable){
// last version
$deliverable = $deliverables->deliverable_version->last();

}

in Accounts module add:
 public function deliverable_version(){
        return $this->hasMany('Appdeliverable_version')->orderBy('update_at');
    }
in controller:

$deliverables = Accounts::find($owner_account_ID)->deliverables()>with('deliverable_version');
foreach($deliverables as $deliverable){
// last version
$deliverable = $deliverables->deliverable_version->last();

最新更新