gmarche/src/Product/Table/ProductTable.php

46 lines
1.5 KiB
PHP

<?php
namespace App\Product\Table;
use App\Auth\UserTable;
use App\Gmarche\Table\AntenneTable;
use App\Gmarche\Table\RegionTable;
use App\Product\Entity\Product;
use Framework\Database\Query;
use Framework\Database\Table;
class ProductTable extends Table
{
protected $entity = Product::class;
protected $table = 'products';
public function findAll(): Query
{
$user = new UserTable($this->pdo);
$antenne = new AntenneTable($this->pdo);
$region = new RegionTable($this->pdo);
return $this->makeQuery()
->join($user->getTable().' as u' , 'u.id = p.user_id')
->join($antenne->getTable().' as a' , 'a.id = p.antenne_id')
->join($region->getTable().' as r' , 'r.id = a.region_id')
->select('p.*, u.username, a.name as antenne_name, r.name as region_name' )
->order('p.created_at DESC');
}
public function findByAntenneId($field, $value): Query
{
$user = new UserTable($this->pdo);
$antenne = new AntenneTable($this->pdo);
$region = new RegionTable($this->pdo);
return $this->makeQuery()
->join($user->getTable().' as u' , 'u.id = p.user_id')
->join($antenne->getTable().' as a' , 'a.id = p.antenne_id')
->join($region->getTable().' as r' , 'r.id = a.region_id')
->select('p.*, u.username, a.name as antenne_name, r.name as region_name' )
->where("$field = $value" )
->order('p.created_at DESC');
}
}