You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.4 KiB
115 lines
2.4 KiB
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use CodeIgniter\Model;
|
|
|
|
class Brands extends Model
|
|
{
|
|
/**
|
|
* table name
|
|
* @var string
|
|
*/
|
|
protected $table = 'brands';
|
|
protected $primaryKey = 'id'; // Primary key column
|
|
protected $allowedFields = ['name', 'active'];
|
|
|
|
/**
|
|
* Get active brands information
|
|
* @return array
|
|
*/
|
|
public function getActiveBrands()
|
|
{
|
|
return $this->where('active', 1)->findAll();
|
|
}
|
|
|
|
/**
|
|
* Get brand data by id or all
|
|
* @param mixed $id
|
|
* @return array|object|null
|
|
*/
|
|
public function getBrandData($id = null)
|
|
{
|
|
if ($id) {
|
|
return $this->find($id); // Find by id
|
|
}
|
|
return $this->findAll(); // Get all
|
|
}
|
|
|
|
/**
|
|
* Insert new brand
|
|
* @param mixed $data
|
|
* @return bool|int|string
|
|
*/
|
|
public function create($data)
|
|
{
|
|
if ($data) {
|
|
return $this->insert($data); // Insert data and return true/false based on success
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Update brand data
|
|
* @param mixed $data
|
|
* @param mixed $id
|
|
* @return bool
|
|
*/
|
|
public function updateBrand($data, $id)
|
|
{
|
|
if ($data && $id) {
|
|
return $this->update($id, $data); // Update data by id
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Delete brand
|
|
* @param mixed $id
|
|
* @return bool|\CodeIgniter\Database\BaseResult
|
|
*/
|
|
public function remove($id)
|
|
{
|
|
if ($id) {
|
|
return $this->delete($id); // Delete by id
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function getName()
|
|
{
|
|
return $this->db->table('brands')->select('name')->where('active', 1)->get()->getResult();
|
|
}
|
|
|
|
public function getNameById(int $id)
|
|
{
|
|
return $this->select('name')->where('active', 1)
|
|
->where('id', $id)->first();
|
|
}
|
|
|
|
public function getOrCreateIdByName(string $name): int
|
|
{
|
|
$normalized = trim($name);
|
|
|
|
$brand = $this
|
|
->where('name', $normalized)
|
|
->first();
|
|
|
|
if ($brand) {
|
|
return (int) $brand[$this->primaryKey];
|
|
}
|
|
|
|
$newData = [
|
|
'name' => $normalized,
|
|
'active' => 1,
|
|
];
|
|
|
|
$insertedId = $this->insert($newData);
|
|
|
|
if (! $insertedId) {
|
|
throw new \RuntimeException('Impossible de créer le brand « ' . $normalized . ' »');
|
|
}
|
|
|
|
return (int) $insertedId;
|
|
}
|
|
}
|
|
|