要求: 要在订单(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-oauth2-server, 用于实现OAuth2服务器的包装器( https yii2-oauth2-server用于实现OAuth2服务器的包装器( https://github.com/bshaffer/oauth2-server-php 插件)安装安装这里扩展的首选方法是通过 Composer 。...
yii2-dynamic-fields, 显示动态字段的小部件,添加和删除它们的使用 Pjax yii2-dynamic-fields显示动态字段的小部件,添加和删除它们的使用 Pjax 。 安装安装这个扩展的首选方法是通过 composer插件。运行...
yii2-device-detect, 移动检测库的Yii2扩展 yii2-device-detect基于Yii2扩展的移动检测库。使用它只需要在 composer.json file: 中使用这个扩展"alexandernst/yii2-device-detect":"0.0.12",
系统基于yii2高级版本开发,后台模板使用的 Ace Admin。对于一般的后台开发,比较方便; 对于数据表的CURL操作都有封装,且所有操作都有权限控制。现在这个项目只是一个示例项目, 主要功能被我移到: [jinxing/yii2-...
yii2-scroll-pager, 用于 Yii2 ListView小部件的无限AJAX滚动 Yii2滚动寻呼机使用AJAX将常规分页页面转换为无限滚动页。Y2SP使用 Pagination 对象,它指定了完整的页面数目和当前页码。使用 JQuery无限Ajax滚动插件...
yii2-taggable, Yii框架的taggable行为 Yii 2的 Taggable行为 Yii框架的现代taggable行为。安装安装这个扩展的首选方法是通过 composer插件。运行$ composer require creocoder/yii2-tagg
Yii2.0-图片上传扩展(异步加载缩略图) [扩展组件]
Laravel开发-yii2-websocket 带示例和演示的简单PHP WebSocket服务器:简单聊天(单守护进程)-http://sharoid.ru/chat.html,专业聊天(master worker)-http://sharoid.ru/chat2.html,简单游戏-...
Laravel开发-yii2-giiall 使用yii2 gii为其他PHP框架生成代码,如phalconeye、laravel等。
Ajax-yii2-widgets.zip,yii2框架的小部件集合,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下更改。
本篇文章主要介绍了yii2-GridView在开发中常用的功能及技巧总结,数据网格或者说 GridView 小部件是Yii中最强大的部件之一。有兴趣的可以了解一下。
yii2-elasticsearch, Yii 2 Elasticsearch扩展 Elasticsearch查询和 Yii 2的ActiveRecord这个扩展为 Yii框架 2.0提供了的集成。 它包括基本查询/搜索支持,还实现了 ActiveRecord Pattern,允许你在elasticsearch
Ajax-yii2-notification-wrapper.zip,yii2通知包装器模块通过growl、noty、toastr和更多库呈现来自会话flash(支持ajax、pjax等)的消息,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json...
Amp-yii2-queue.zip,YII 2.0非阻塞队列扩展。,amp是php的一个非阻塞并发框架。它提供事件循环、承诺和流,作为异步编程的基础。
yii2-oauth2-rest-template, 带有OAuth2服务器的Yii2 REST API 模板 在 Yii2上,使用OAuth2服务器的 REST API 应用程序。这是一个 Yii2 Rest应用程序模板,配置了OAuth2服务器( 使用 ...
yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块 Yii2-plugins-system入门 Yii2-plugins-system是设计用来工作的。 这意味着安装需要最少的步骤。 你应该只需要一个配置步骤,你就可以在Yii2网站上...
Yii2-Adminlte 后台用户及密码: 登录名: admin密码: qwe1234 安装和入门: 如果您没有 Composer,您可以按照 getcomposer.org 上的说明进行安装。 运行以下命令: ...
yii2-schemadump 从现有数据库生成模式。演示版要求PHP 7.3或更高版本Yii 2.x安装composer require --dev jamband/yii2-schemadump用法在config / console.php中添加以下内容: return [ . . . 'components' => [ . ...