【问题标题】:query in table pivot laravel在表数据透视 laravel 中查询
【发布时间】:2020-08-09 14:59:32
【问题描述】:

我有两张表和一张数据透视表

  • FK_idStore
  • FK_idEmployee
  • 日期变化

我的模型店:

   public function employee(){

   return $this->belongsToMany(empleado::class,'employee_store', 'fk_idStore','fk_idEmployee')        
  ->withPivot('dateChange');
  } 

结果:

我需要显示员工所在的最后一家商店。

【问题讨论】:

    标签: mysql laravel eloquent pivot-table


    【解决方案1】:

    假设数据透视表是商店,并且您需要每个商店中每个员工的最后一条记录,请使用:

    public function employee(){
        return Employe_Store::all()->groupBy('fk_idEmployee')->max('dateChange');
    }
    

    【讨论】:

    • @Edu27 如果这不是您所需要的,请告诉我。
    • 我的 3 个表是:Employee、Store 和 Employe_Store(这是数据透视表),请查看stackoverflow.com/questions/61440019/…
    • 好的,我在这里编辑了我的回复并在那里发布。测试它是否适合你。
    【解决方案2】:

    试试:

    $store = Store::findOrFail($id)->employee->latest();
    

    或者:

    $store = Store::findOrFail($id)->employee->->sortBy('dateChange', 'desc')->first();
    

    【讨论】:

    • 我需要显示属于 Store 的每个员工的列表。谢谢
    • @Edu27 你说你需要最后一家商店,好的,那么你需要 $store= Store::findOrFail($id)->employee;
    • 当然,我说的是最后一次存储,但是在数据透视表中有重复记录,例如employee1 - store 1 date 2018 //employee1 - store2 - date 2019 //employee1-store3 -date2020 (i只需要显示它的实际商店),请
    • Laravel 知道您有数据透视表并自动从中获取数据,但是您应该在 Store 模型中拥有员工函数,对于 Employee 模型,您应该在其中拥有商店函数.并在迁移中确保您已正确设置外键。
    • 一切正常,但是如何在没有 REPEAT 记录的情况下过滤 ($store= Store::findOrFail($id)->employee) 的结果?我使用“dateChange”,因为我知道最后一家商店。
    猜你喜欢
    • 2015-08-06
    • 2018-11-11
    • 2015-06-24
    • 2017-05-04
    • 1970-01-01
    • 2019-02-27
    • 2015-09-30
    • 2017-07-03
    相关资源
    最近更新 更多