谁一开始就是大神?

PHP 第65页

PHP

多表连接查询[2.0]

SlyKeo阅读(73)

表a

agcy_id
nm

表b

id
cus_id

表c

id
agcy_id

关系
表a 1:n 表b
表a 1:n 表c
表b 与 表c 没关系

a::find()->select('*,count(cus_id) as cus_num')
	 ->join('LEFT JOIN','b','b.cus_id=a.agcy_id')
	 ->groupBy('cus_id');

a::find()->select('*,count(c.agcy_id) as agcy_num')
	 ->join('LEFT JOIN','c','c.agcy_id=a.agcy_id')
	 ->groupBy('agcy_id');

想要连接3张表,里面有a.*,cus_num,agcy_num
怎么写语句?
求解!

你可以这样写
$query=a::find();
$query->select(‘a.,b.,c.*’)

这个为啥写了两个email[2.0]

coolLion阅读(78)

<?php

namespace app\models;

use yii\base\Model;

class EntryForm extends Model
{
    public $name;
    public $email;

    public function rules()
    {
        return [
            [['name', 'email'], 'required'],
            ['email', 'email'],
        ];
    }
}

一个是email字段,一个是验证是否是email
第一个是必填,第二个是验证格式

select2【带搜索框的select插件】如何通过change事件想select2传值?[2.0]

FionaStone阅读(76)

通过这个dropDownList中,选择的一个值,控制 下面 select 显示的列表。

$form->field($model, 'type')->dropDownList($model->get_notice_type(), [
   'prompt' => '请选择...',
    		
]);

已有的select:

$form->field($model, 'cgId')->widget(Select2::classname(), [
  'hideSearch'=>false,
  'data' => $model->get_cg_id(),
  'language' => 'zh-CN',
  'options' => ['placeholder' => '请选择...'],
  'pluginEvents' =>[
      "select2:closing" => "function() { $('#notice-cgId').blur(); }",
   ]
                    
]);

怎么通过选中一个值,控制那个select显示的列表呢?
就是这么一个忧伤的问题。
用change事件,还是啥的,都行,希望有大神能告诉我!!
实在是百度不出来。Google也用了,我也到开发这个插件的老外那留了个言【不是问的这个问题】。人家没鸟我····

假设select2对应的id=select2,且同时假设change事件会去服务端请求新的下拉数据。
那么则有
change请求到新的数据后,可拼接为一组option,然后直接把该组option填充到id=select2内即可
$('#select2').html(change事件获取到的数据拼接的option字符串);
js动态调整咯,你去搜索下三级联动.这类例子应该不少.

Yii列表页怎么更改查询的结果?[2.0]

EllieFox阅读(73)

比如查询城市表,里面有数据 广东 、广州 、深圳 、湖南 、长沙。。。为了区分省和市,省的f_id = 0,而市的呢 就是对应省的 id, 这时候我用CRUD自动生成的VIEWS, 他查询出的所属省份是直接查询出数字来的,我需要换成对应的省份。不管是更改SQL语句也好,还是直接在查询出的结果里面循环再次查询也好,都可以,我只想知道,怎么或者说,在哪更改 列表页的查询语句,还有查询结果如果我要进行处理的话,结果是在哪里出来的?小白求教,很多问题。。。先问一个。感激不尽!谢谢!

index.php视图中定义展示字段修改一下
模型中添加一个新的方法:
上面的代码可以实现展示效果,如果需要搜索,需要修改search模型。
最好的解决方法,数据表多加一个 f_name 字段, 多加一个冗余字段,程序省去了很多繁琐的处理。
你的描述我没有明白,能结合代码再描述清楚些吗

在搜索栏输入数据得到搜索结果后,我的JS就不工作了[2.0]

littleyak阅读(81)

在 GridView的每行增加操作按钮,自己写了JS,页面打开的时候JS工作正常,
然后在搜索栏输入数据得到搜索结果后,我的JS就不工作了,嘛个原因
代码大概如下:

 Pjax::begin();
    echo GridView::widget([
.......
]);
 Pjax::end();
<?php $this->beginBlock('myjs') ?>
.........
<?php $this->endBlock() ?>
<?php $this->registerJs($this->blocks['myjs'], \yii\web\View::POS_READY); ?>

打开firebug调试啊 你放一段php代码 却让大家找js错误 这思路就不对

YII2.0覆写数据表名[yii\db\ActiveRecord::tableName()][2.0]

Neoelephant阅读(78)

刚研究了一会权威手册 看到了覆写数据库表名的方法 想试试,结果试了好久都失败,就是报错,请问数据库表名覆写该修改哪里。求指教。yii\db\ActiveRecord::tableName()

代码在那里。。。。。。。。

composer无法连接[2.0]

Jimcrab阅读(79)

composer一直无法连接

请问要怎么办?

直接github.com下载 解压到vendor下行不行?

行的,有些项目,比如国内的,就有提供整个vendor目录下载.
网络不通,两个方案,挂vpn或者换composer源. 国内有人做了镜像,上次使用不知道是配置不对还是别的原因,效果不理想.日本也有一个镜像站.
有时候 下载国外的需要

GridView+ActiveDataProvider怎样才能做到添加一条其他表的数据[2.0]

Tinalove阅读(73)

现在遇到一个问题,展示渠道表内的内容时,需要用到一个用户表的字段信息

controller

public function actionIndex()
{
    $dataProvider = new ActiveDataProvider([
        'query' => Channel::find(),
    ]);

    return $this->render('index', [
        'dataProvider' => $dataProvider,
    ]);
}

views

<?= GridView::widget([
    'dataProvider' => $dataProvider,

    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'channel_id',
        'channel_name',
        'email',<=================== 用户表内的一个字段
        'channel_created_at',
        [
                'class' => 'yii\grid\ActionColumn',
                'header' => '操作',
                'template' => '{view}{update}',
        ],
    ],
]); ?>

Channel模型里,定义一个getUser函数
两个思路:
1.联合查询数据,一次性把要的数据查询过来.
如楼上所示,还可以改进一下.
2.在要用到的地方临时查询数据.

你们操作数据库的层是怎么写的,我不确我的写法有没有问题,特来请教大家[2.0]

coolelephant阅读(81)

我看有很项目中在完成一些数据库操作时用的是静态方法完成的。

就是说在ActiveRecord的子类里增加一个静态方法,然后再Controller里直接用 Class::function形式调取。

举个例子:

比如有个User类,对应数据库中User表,

Class User extends ActiveRecord
{
    public static function addUser($username.$password)
    {
         //写一些sql插入这条记录
    }
}

然后再Controller里直接用

User::addUser($username.$password)

这样的方式调用可以么?有不安全的地方么?因为我了解到的,静态方法是属于类的,如果两个请求同时调了这个方法,会冲突么?虽然我写了些测试代码,没有发生冲突的情况,但是我还是不放心,因为之前写别的的时候都是new 一个普通对象,然后调对象方法实现的,还没这么用过,不怎么放心。

另外就是 还有没其他的问题。

大家平时都怎么用的呢?

应该是两个参数吧:
个人觉得,不是说不能这么做,而是可以直接使用yii提供的增删改操作
使用原生sql语句:
要多看看文档:http://www.yiichina.com/doc/guide/2.0/db-active-record
框架这个东西,应该灵活应用,不是说就不能一定怎么做,一定就要那么做,没有这个硬性要求。
函数式写法,不建议学习
应该保持OO的写法,static fun意义不大,更多的我们会用这个思维来做一些tools
如果调用频繁可以考虑
$user = new User();
$user->createNew($user, $pass); //do pass encode and blabla in class instant.
我想你去理解下什么是MVC,这是一种思想,
数据打交道的教给M。C是控制逻辑,本来M要做的事,你给C做,虽然结果可行。但是脱离了MVC的思想

登录

找回密码

注册