我们有个关于crm的后台,就是需要写一些列表,他们之间表关系很复杂.......
我们的项目大致是这样的:
下面我就说说上面的班型,期次, 班级, 负责人, 他们都只通过多个表之间的相互关联得到的结果.下面是我手写的分析:
错误更正: 下面途中最后负责人关联是crm_hmy中的contact_id和crm_contact中的contact_id关联得到charger_id,然后crm_contact_中的charger_id中的crm_employee中的id查出truename
Search文件代码如下:
HmyMemberSerach.php文件
class HmyMemberSearch extends HmyMember
{
//当你进行关联表时,需要查询其他表中的字段时,所有就需要定义你要查询的字段名称
public $class_no;
public $grade_no;
/**
* @inheritdoc
*/
public function rules()
{
//当你在后台列表想要搜索哪个字段时,那么首先这个rules里面就带有这个字段
return [
[['birthday', 'class_no', 'grade_no', class_id', 'charger_id', 'auth_status'], 'integer'],
[['truename', 'sex', 'mobile', 'email', 'weixin', 'entry_status'], 'safe'],
[['corp_name'], 'string']
];
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
//我查的是认证状态为1的列表
$query = HmyMember::find()->where(['crm_hmy.auth_status' => 1]);
$appName = false;
$termName = false;
$contactName = false;
$employeeName = false;
try {
//获取表名
$termName = Yii::$app->util->getTableName('db', HmyTerm::tableName());
$className = Yii::$app->util->getTableName('db', HmyClass::tableName());
$contactName = Yii::$app->util->getTableName('db', Contact::tableName()