gpt4 book ai didi

php - 在一列搜索中搜索全名

转载 作者:行者123 更新时间:2023-12-03 01:51:56 25 4
gpt4 key购买 nike

我在我的博客搜索中有查询,我在其中加入了与用户的关系。在我的“用户”列中,我想按用户的全名搜索用户。这是我的 BlogSearch 代码。

$query->joinWith('relUser');

$query->andFilterWhere([
'Id' => $this->Id,
'CreatedAt' => $this->CreatedAt,
]);


$query->andFilterWhere(['like', 'Title', $this->Title])
->andFilterWhere(['like', 'Description', $this->Description])
->andFilterWhere(['like', 'User.Name', $this->Rel_User])
->andFilterWhere(['like', 'User.Surname', $this->Rel_User]);

最佳答案

在您的模型博客中添加 fullName 的 getter

public function getFullName() {
return $this->relUser.>Name . ' ' . $this->relUser.Surname;
}

向您的 BlogSearchar 添加过滤器字段

class BlogSearch extends Blog
{

public $fullName;

/* setup rules */
public function rules() {
return [
/* your other rules */
[['fullName'], 'safe']
];
}

然后使用它来代替您的 JoinWith 进行查询

        $query->joinWith(['relUser' => function ($q) {
$q->where( 'UrUser.Name LIKE "%' .$this->fullName . '%"' . ' OR UrUser.Name LIKE "%' . $this->fullName . '%"' );
}]);

在 gridView 中,您可以直接使用 fullName 字段

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'Title',
'Description',
'fullName',
//'CreatedAt',
// 'IsDeleted',

['class' => 'yii\grid\ActionColumn'],
],
]); ?>

对于姓名和姓氏,请同时尝试添加

   ->orFilterWhere(['like', 'concat(UrUser.Name, " " , UrUser.Surname) ', $this->fullName]);

关于php - 在一列搜索中搜索全名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com