79 lines
3.2 KiB
Twig
79 lines
3.2 KiB
Twig
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Model;
|
|
|
|
/**
|
|
{% for field in fields %}
|
|
* @property {{ field.php_type }} ${{ field.column_name }}
|
|
{% endfor %}
|
|
*/
|
|
class {{ controller_name }} extends Model
|
|
{
|
|
/**
|
|
* The table associated with the model.
|
|
*/
|
|
protected ?string $table = '{{ table_name }}';
|
|
|
|
protected string $primaryKey = '{{ table_name }}_id';
|
|
|
|
/**
|
|
* The attributes that are mass assignable.
|
|
*/
|
|
protected array $fillable = [];
|
|
|
|
/**
|
|
* The attributes that should be cast to native types.
|
|
*/
|
|
protected array $casts = [{% set first = true %}{% for field in fields %}{% if field.php_type == 'int' %}{% if not first %}, {% endif %}'{{ field.column_name }}' => 'integer'{% set first = false %}{% endif %}{% endfor %}];
|
|
|
|
public static function list(array $param)
|
|
{
|
|
$model = self::query();
|
|
{% for field in query_fields %}
|
|
{% if field.query_type == 'eq' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', $param['{{ field.column_name }}']);
|
|
}
|
|
{% elseif field.query_type == 'neq' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', "<>", $param['{{ field.column_name }}']);
|
|
}
|
|
{% elseif field.query_type == 'gt' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', ">", $param['{{ field.column_name }}']);
|
|
}
|
|
{% elseif field.query_type == 'lt' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', "<", $param['{{ field.column_name }}']);
|
|
}
|
|
{% elseif field.query_type == 'gte' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', ">=", $param['{{ field.column_name }}']);
|
|
}
|
|
{% elseif field.query_type == 'lte' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', "<=", $param['{{ field.column_name }}']);
|
|
}
|
|
{% elseif field.query_type == 'like' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', "like", "%{$param['{{ field.column_name }}']}%");
|
|
}
|
|
{% elseif field.query_type == 'between' %}
|
|
if (isset($param['{{ field.column_name }}']) && $param['{{ field.column_name }}'] != '') {
|
|
$model = $model->where('{{field.column_name}}', "between", $param['{{ field.column_name }}']);
|
|
}
|
|
{% endif %}
|
|
{% endfor %}
|
|
return $model->orderByDesc("{{ table_name }}_id")
|
|
->select([{% for field in list_fields %}"{{ field.column_name }}"{% if not loop.last %}, {% endif %}{% endfor %}])
|
|
->paginate((int)$param['limit']);
|
|
}
|
|
|
|
public static function options()
|
|
{
|
|
return self::select(["{{ table_name }}_id", "{{ table_name }}_name"])->get()->toArray();
|
|
}
|
|
}
|