server/static/view/templates/model.php.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();
}
}