modelo
1. Definición y uso básico del modelo
En comparación con la base de datos operativa de Db, Model
es más conveniente utilizar clases de modelo .
En la controller
carpeta, el mismo directorio crea una nueva carpeta model
, y luego crea una nueva Model
clase, el nombre del archivo y el nombre de la tabla de la base de datos corresponden a los datos, como la tabla de datos demo
, luego la clase modelo llamada Demo.php
:
<?php
namespace app\model;
use think\Model;
class Demo extends Model
{
}
Utilice la clase de modelo en el controlador:
public function model1(){
$result = Demo::find(2);
dump($result);
}
Salida del navegador:
este es el objeto del modelo de salida. Si desea generar datos directamente, puede utilizar el toArray
método:
dump($result->toArray());
Salida del navegador:
2. Consulta de modelos y otros usos
1. nuevo objeto de modelo
Además del uso directo de los métodos estáticos anteriores, también puede operar en new
un objeto primero . El objeto modelo devuelto o una colección de objetos modelo también se puede toArray
convertir en una matriz usando métodos:
public function model2(){
$model = new Demo();
$result = $model->where('id','>',2)->select();
dump($result);
}
2. Model Getter
El buscador de modelos puede modificar el valor de un campo o definir un campo que no existe en la tabla de datos. La regla de definición del nombre del método es get[字段大驼峰名]Attr
, por ejemplo getStatusTextAttr
, hay un status
campo en la base de datos y la model
clase se modifica como:
<?php
namespace app\model;
use think\Model;
class Demo extends Model
{
public function getStatusTextAttr($value, $data){
$status = [
0 => '待审核',
1 => '正常',
99 => '删除'
];
return $status[$data['status']];
}
}
La llamada del controlador, el nombre de la joroba grande se cambia a la 下划线小写
forma:
public function model2(){
$model = new Demo();
$result = $model->find(2);
dump($result->status_text); // "待审核"
dump($result->toArray());
}
Pero convertido directamente a una matriz, todavía no habrá status_text
campos:
si desea obtener los 数据表中不存在的
atributos de datos que contienen el getter procesados , puede usar el append
método para agregar, los campos existentes en la tabla de datos se pueden procesar sin procesar, y automáticamente devolverá:
dump($result->append(['StatusText'])->toArray());
append
Los atributos de se pueden 大驼峰
nombrar o 下划线小写
método:
dump($result->append(['status_text'])->toArray());
resultado: