我用gii工具创建了crud应用程序.我有3个表tbl_targetcities,lib_cities和lib_provinces.我能够将lib_cities连接到tbl_targetciteis而不是lib_provinces.而且城市/市政的分类也不起作用.它似乎根据ID进行排序.
tbl_target_cities

lib_cities

lib_provinces

样本视图

到目前为止,这是我在模型中的关系.
public function getCityName()
{
return $this->hasOne(LibCities::className(),['city_code'=>'city_code']);
}
Run Code Online (Sandbox Code Playgroud)
在我的视图文件中......
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute'=>'city_code',
'value'=>'cityName.city_name'
],
[
'attribute'=>'prov code',
'value'=>'cityName.city_name'
],
'kc_classification',
'cluster',
'grouping',
'priority',
'launch_year',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
Run Code Online (Sandbox Code Playgroud)
如何从lib_provinces显示prov_name ???
编辑在评论框中回答用户2839376的问题
在搜索模型类中
$query = TblSpBub::find();
$query->joinWith('brgyCode')->joinWith(['cityCode'])->joinWith(['cityCode.provCode']);
$covered= LibAreas::find()->where(['user_id'=>yii::$app->user->identity->id])->all();
$query->all();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]],
]);
$dataProvider->sort->attributes['city'] = [
'asc' => ['lib_Cities.city_name' => SORT_ASC],
'desc' …Run Code Online (Sandbox Code Playgroud) 我有两个问题......
我有3张桌子.tbl_target_cities,lib_cities和lib_provinces.
通过遵循视频教程,我能够将tbl_target_cities中的数据显示到gridview,并将其连接到lib_cities.
除了来自关系的CITY/MUNICIPALITY列之外,gridview中的排序工作正常.
问题1:如何纠正CITY/MUNICIPALITY列的排序?
问题2:如何添加带有搜索框和功能排序功能的省列?
tbl_target_cities
+-------------------+-----------------------+
| Field | Type |
+-------------------+-----------------------+
| id | int(11) |
| city_code | varchar(20) |
| kc_classification | varchar(100) |
| cluster | enum('1','2','3','4') |
| grouping | int(11) |
| priority | varchar(100) |
| launch_year | int(11) |
+-------------------+-----------------------+
Run Code Online (Sandbox Code Playgroud)
lib_cities
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| city_code | char(9) | NO | PRI | | |
| …Run Code Online (Sandbox Code Playgroud) 我已经安装了kartik gridview,从文档 和演示中,我复制了一些代码并得到了这个..
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'hover'=>true,
'condensed'=>true,
'floatHeader'=>true,
'bordered'=>true,
'pjax' => true,
'toolbar'=>[
'{export}',
'{toggleData}',
],
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute'=>'province',
'label'=>'Province',
'value'=>'cityCode.provCode.prov_name',
],....
Run Code Online (Sandbox Code Playgroud)
页面显示 gridview 正常,但缺少导出按钮。我还需要下载导出插件吗?还是代码缺少重要的配置?
如何添加表中每一行的行号?我使用了分页,但发现很难显示行数。在第 2 页,它应该从 6 开始,因为我的分页是每页 5。
编辑
以及如何正确显示showing 1 to 5 of 2095表格上方的单词?
控制器
class SchoolController extends Controller
{
function index()
{
$q = Input::get('q');
if ($q != "") {
$schools = LibSchool::where('school_name', 'LIKE', '%' . $q . '%')
->orWhere('school_id', 'LIKE', '%' . $q . '%')
->orWhere('address', 'LIKE', '%' . $q . '%')
->orWhere('school_head', 'LIKE', '%' . $q . '%')
->orWhere('level', 'LIKE', '%' . $q . '%')
->orderBy('school_name', 'asc')
->with('libdistrict')
->with('libdistrict.libdivision')
->paginate(5)->appends('q', $q);
} else {
$schools = …Run Code Online (Sandbox Code Playgroud) 我想先添加一个条件,然后再添加另一个where查询,但是laravel不允许。我想要类似以下的内容。
function index()
{
$role = Auth::user()->role; //SEE_ALL, SEE_DEPT_A, SEE_DEPT_B
$q = Input::get('q');
if ($q != "") {
$user = User::where('name', 'LIKE', '%' . $q . '%')
->orWhere('email', 'LIKE', '%' . $q . '%')
->orderBy('name');
if ($role == "SEE_DEPT_A") {
$user->where('user_department', "A");
}
$user->paginate(10)->appends('q', $q);
}
return view('users.index')->with('data', ['users' => $user, 'q' => $q]);
}
Run Code Online (Sandbox Code Playgroud) 如何刷新当前页码的DataTable而不返回第一页?此代码刷新表格,但继续转到第一页或分页的第一个链接。
$('#table_users').DataTable().ajax.reload();
Run Code Online (Sandbox Code Playgroud)
这就是表的初始化方式。
$(document).ready(function() {
// init datatable.
var dataTable = $('#table_users').DataTable({
processing: true,
serverSide: true,
autoWidth: false,
pageLength: 10,
// scrollX: true,
"order": [[ 0, "desc" ]],
ajax: {
url: '{{ route('get_users') }}'
},
columns: [
{data: 'name', name: 'name'},
{data: 'email', name: 'email'},
{data: 'sex', name: 'sex'},
{data: 'bday', name: 'bday'},
{data: 'contact', name: 'contact'},
{data: 'scope', name: 'scope'},
{data: 'roles', name: 'roles'},
{data: 'permissions', name: 'permissions'},
]
});
});
Run Code Online (Sandbox Code Playgroud)
控制器。
$user = User::select('id', 'name', 'email', 'sex', 'bday', …Run Code Online (Sandbox Code Playgroud)