Sergio de EOMEjemplo de como crear un join en pagination, agregarle el tipo de columna, agregada por alias en el fields, Users__total_of_licenses, etc.. en CakePHP 3
<?phpnamespaceApp\Controller;useApp\Controller\AppController;useCake\Core\Configure;useCake\Datasource\Exception\MissingModelException;useCake\Datasource\Exception\RecordNotFoundException;useCake\I18n\Time;useCake\Network\Exception\NotFoundException;useCake\Event\Event;useCake\Utility\Hash;useReCaptcha\ReCaptcha;useRuntimeException;/** * Users Controller * @property \App\Model\Table\UsersTable $Users * @property \App\Model\Table\TimezonesTable $Timezones * @property \App\Model\Table\UserRolesTable $UserRoles * @property \App\Model\Table\CountriesTable $Countries * @property \App\Model\Table\LanguagesTable $Languages * @property \App\Model\Table\LanguagesAppTable $LanguagesApp * @property \App\Model\Table\LicenseesTable $Licensees * @property \App\Model\Table\SocialProfilesTable $SocialProfiles */classUsersControllerextendsAppController{............/** * Index method * @return \Cake\Network\Response|null */publicfunctionindex(){# Hi my alternative example full, user scheman() in controller Users add type column aliasFiels by join data:# Ejemplo de como crear un join en pagination, agregarle el tipo de columna, agregada por alias en el fields, Users__total_of_licenses, etc..$this->Users->schema()->addColumn('is_licensed',['type'=>'boolean',])->addColumn('total_of_licenses',['type'=>'integer',]);$fields=['Users.id','Users.username','Users.first_name','Users.last_name','Users.active','Users__is_licensed'=>'if(count(LicenseesUsers.id)>=1,true,false)','Users__total_of_licenses'=>'count(LicenseesUsers.id)','Users.created','Users.modified','Languages.id','Languages.name','Countries.id','Countries.name','UserRoles.id','UserRoles.name',];$where=['contain'=>['UserRoles','Countries','Languages'],'fields'=>$fields,'join'=>['LicenseesUsers'=>['table'=>'licensees_users','type'=>'LEFT','conditions'=>['Users.id = LicenseesUsers.users_id'],],],'group'=>'Users.id'];// Set pagination$this->paginate=$where;// Get data in array$users=$this->paginate($this->Users)->toArray();}............}
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.