## 模型及关联
模型的查询始终返回模型对象或者数据集对象,不再返回数组。
模型数据和关联数据分开存储,避免影响。
模型事件方法的参数支持依赖注入。
如果使用dump助手函数调试模型对象或者数据集对象,则会进行`toArray`转换后输出,如果直接`var_dump`模型对象的话,只会输出模型的`data`和`relation`属性。
查询范围支持链式操作,例如User模型类定义如下:
~~~
namespace app\index\model;
use think\Model;
class User extends Model
{
public function email($query, $email)
{
$query->where('email', 'like', '%' . $email . '%');
}
public function score($query, $score)
{
$query->where('score', '>', $score);
}
}
~~~
在查询的时候可以如下使用:
~~~
// 查询email包含thinkphp和分数大于80的用户
User::email('thinkphp')->score(80)->select();
~~~
#### 模型关联
增加多态一对一关联,使用模型类的`MorphOne`方法定义。
可以给关联属性定义获取器方法,会首先获取关联属性然后调用获取器处理。
模型类增加`parent`属性,用于保存当前模型的所属(关联)模型,使用getParent方法获取,当关联对象中获取父模型的时候会自动获取。
多对多关联中间表定义不需要使用表前缀,并且支持定义模型,可以封装独立的业务逻辑。