laravel 自动join的一种配置方法


 /**
     * @power 只是一个演示功能
     * $a = (new MobileUser())->demo(['mobile_user.*', 'device.*']);
     * $a = (new MobileUser())->demo(['mobile_user.*', 'device.id', 'device.device_id']);

     * @param array|string[] $column
     * @return mixed
     */
   public function demo(array $column = ['mobile_user.*', 'device.*'])
   {
       $builder = $this;
       $joinTable = ['device' => function () use($builder){
           return $builder->join('device', 'device.uid', 'mobile_user.uid');
       }];

       foreach ($column as $index => $item) {
           $tmp = explode('.', $item);
           var_dump($tmp);
           if (2 != count($tmp)) {
               continue;
           }

           if (!in_array($tmp[0], array_keys($joinTable))) {
               continue;
           }

//            dd($joinTable[$tmp[0]]);
           $builder = $joinTable[$tmp[0]]();

           unset($joinTable[$tmp[0]]);
       }


       return $builder->select($column)->get();
   }
posted @ 2021-01-15 12:52  祥子爱游戏  阅读(288)  评论(0)    收藏  举报