## 模型及關聯
模型的查詢始終返回模型對象或者數據集對象,不再返回數組。
模型數據和關聯數據分開存儲,避免影響。
模型事件方法的參數支持依賴注入。
如果使用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方法獲取,當關聯對象中獲取父模型的時候會自動獲取。
多對多關聯中間表定義不需要使用表前綴,并且支持定義模型,可以封裝獨立的業務邏輯。