`
空洞的世界
  • 浏览: 50451 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

yii2-gridview中让关联字段带搜索和排序功能

    博客分类:
  • Yii2
阅读更多
要求: 要在订单(Order)视图的gridview中显示出客户(Customer)姓名,并使其具有与其它字段相同的排序和搜索功能。

数据库结构 订单表order含有字段customer_id 与 客户表customer的id字段关联

首先确保在Order Model中包含以下代码:

一定要是get开头的,用的时候,把get去掉

public function getCustomer()
{
    return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
}



第一步: 在OrderSearch添加一个$customer_name变量
class OrderSearch extends Order
{
    public $customer_name; //<=====就是加在这里


第二步: 修改OrderSearch中的search函数
public function search($params)
{
$query = Order::find();
 
$query->joinWith(['customer']);<=====加入这句
 
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
 
$dataProvider->setSort([
'attributes' => [
/* 其它字段不要动 */
/* 下面这段是加入的 */
/*=============*/
'customer_name' => [
'asc' => ['customer.customer_name' => SORT_ASC],
'desc' => ['customer.customer_name' => SORT_DESC],
'label' => 'Customer Name'
],
/*=============*/
]
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
 
$query->andFilterWhere([
'id' => $this->id,
'user_id' => $this->user_id,
'customer_id' => $this->customer_id,
'order_time' => $this->order_time,
'pay_time' => $this->pay_time,
]);
 
$query->andFilterWhere(['like', 'status', $this->status]);
$query->andFilterWhere(['like', 'customer.customer_name', $this->customer_name]) ;//<=====加入这句
return $dataProvider;
}


第三步: 修改order/index视图的gridview

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
 
'id',
'customer_id',
'status',
['label'=>'客户', 'attribute' => 'customer_name', 'value' => 'customer.customer_name' ],//<=====加入这句
 
['class' => 'yii\grid\ActionColumn'],
],
]); ?>


我们定义的时候方法是getCustomer,用的时候是customer  如:customern.customer_name

希望对你们有帮助!
分享到:
评论

相关推荐

    Yii2-GridView 中让关联字段带搜索和排序功能示例

    以下是一个具体的例子,展示了如何在Yii2的GridView中实现关联字段的搜索和排序: 1. 在`OrderModel`模型中定义一个`getCustomer`方法,通过`hasOne`关系关联客户模型`Customer`: ```php public function ...

    yii2-oauth2-server, 用于实现OAuth2服务器的包装器( https.zip

    yii2-oauth2-server, 用于实现OAuth2服务器的包装器( https yii2-oauth2-server用于实现OAuth2服务器的包装器( https://github.com/bshaffer/oauth2-server-php 插件)安装安装这里扩展的首选方法是通过 Composer 。...

    yii2-device-detect, 移动检测库的Yii2扩展.zip

    yii2-device-detect, 移动检测库的Yii2扩展 yii2-device-detect基于Yii2扩展的移动检测库。使用它只需要在 composer.json file: 中使用这个扩展"alexandernst/yii2-device-detect":"0.0.12",

    基于Yii2+layui的后台框架模板,实现了完善的RBAC权限控制-yii2-admin-theme.zip

    在Yii2中,RBAC可以通过yii\rbac组件来实现。这个组件支持创建角色、任务、规则,并将它们关联起来。用户可以被分配到角色,角色则拥有特定的权限。Yii2的RBAC系统允许动态调整权限,比如在运行时添加或删除用户的...

    yii-advanced-app-2.0.10.tgz

    在 Advanced 应用模板中,它分为前后台两个独立的应用部分,分别处理后台管理功能和用户前端界面,这使得代码组织更加清晰,更便于团队协作和维护。 该压缩包“yii-advanced-app-2.0.10.tgz”中通常包括以下关键...

    yii2-dynamic-fields, 显示动态字段的小部件,添加和删除它们的使用 Pjax.zip

    yii2-dynamic-fields, 显示动态字段的小部件,添加和删除它们的使用 Pjax yii2-dynamic-fields显示动态字段的小部件,添加和删除它们的使用 Pjax 。 安装安装这个扩展的首选方法是通过 composer插件。运行...

    yii2-file-upload-master.zip

    在使用这个"yii2-file-upload-master"组件之前,开发者需要将其解压,然后将相关代码(如控制器、模型、视图和资产)集成到他们的Yii2.0项目中。此外,还需要确保项目的配置文件(如`config/web.php`)已设置好路由...

    yii2-webadmin.rar

    这个系统已经集成了诸如日志记录、权限管理和用户登录鉴权等基础功能,展现了 Yii2 的强大性能和组件化开发的优势。 首先,让我们深入了解一下 Yii2 框架。Yii(发音为 "易")是一个快速、安全和专业的开源 PHP ...

    yii2-master.rar

    这个“yii2-master.rar”文件是一个归档,包含了Yii2框架的高级版本,可能经过了开发者的一些自定义和优化,使得它更适合用于复杂和高效的应用开发。在部署到Apache或Nginx服务器时,可以直接运行,体现了其良好的...

    Laravel开发-yii2-artisan-bridge

    Yii2框架同样拥有强大的命令行工具,称为Gii,用于生成代码,但其功能和Artisan略有不同。Yii2的Gii主要用于自动生成CRUD(创建、读取、更新、删除)操作的代码,以及模型、控制器、视图和其他基础架构元素。然而,...

    Amp-yii2-queue.zip

    Yii 2的队列组件通常提供队列的创建、任务发布、消费、监控等功能,支持多种驱动,如Redis、Beanstalkd、AMQP等。通过Amp的非阻塞特性,可以实现并发处理多个队列任务,从而提高系统吞吐量。 综上所述,"Amp-yii2-...

    Yii2-Admin 后台模板源代码文件

    系统基于yii2高级版本开发,后台模板使用的 Ace Admin。对于一般的后台开发,比较方便; 对于数据表的CURL操作都有封装,且所有操作都有权限控制。现在这个项目只是一个示例项目, 主要功能被我移到: [jinxing/yii2-...

    yii2swoole让yii2运行在swoole上

    标题"yii2swoole让yii2运行在swoole上"指出的核心知识点是: 1. **Yii2框架与Swoole的集成**:Yii2swoole是将Yii2框架与Swoole进行整合的扩展,允许Yii2应用利用Swoole的高性能特性。它提供了在Swoole环境下运行Yii...

    yii2-taggable, Yii框架的taggable行为.zip

    yii2-taggable, Yii框架的taggable行为 Yii 2的 Taggable行为 Yii框架的现代taggable行为。安装安装这个扩展的首选方法是通过 composer插件。运行$ composer require creocoder/yii2-tagg

    Laravel开发-yii2-websocket

    Laravel开发-yii2-websocket 带示例和演示的简单PHP WebSocket服务器:简单聊天(单守护进程)-http://sharoid.ru/chat.html,专业聊天(master worker)-http://sharoid.ru/chat2.html,简单游戏-...

    Ajax-yii2-widgets.zip

    Ajax-yii2-widgets.zip,yii2框架的小部件集合,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下更改。

    Laravel开发-yii2-giiall

    在IT行业中,Laravel和Yii2都是非常流行的PHP框架,它们各自有着强大的功能和社区支持。本主题聚焦于"使用Yii2 Gii为其他PHP框架生成代码",特别是针对Laravel开发的情况。Gii是Yii2框架的一个内置工具,它提供了一...

    yii2-websocket:这是yii2-websocket软件包的新维护版本

    该软件包是原始yii2-websocket的固定和精简版本,当时尚未维护。 您可以在这里找到原始存储库: : 我简单地进行了这些更改,因为在另一个项目中将需要此更改。 我还不能提供文档,有很多更改。 您唯一的选择是自己...

    yii2-admin.zip

    Yii2-admin是一个基于Yii2框架开发的多集团多商户权限管理体系,它利用了Yii框架的卓越性能和灵活性,以及强大的Role-Based Access Control (RBAC)功能来实现细致的权限划分。Yii2是一款高效的PHP框架,它优化了Web...

Global site tag (gtag.js) - Google Analytics