model里面重写fields()方法可以过滤load()时的字段,那么fields()是在哪调用的?
fields()主要作用关联数据表字段和模型属性,这样数据表改了只改fields里的字段就可以了,不用重新把控制器视图什么的都改一遍。
另外unset后不是在load时过滤而是直接删除和数据表的关联,在该模型内就好像属性或字段不存在一样。
这个貌似没有你说的那个过滤load功能啊。只是返回模型数据时候有用,比如你表里是username你想返回成nickname
model里面重写fields()方法可以过滤load()时的字段,那么fields()是在哪调用的?
fields()主要作用关联数据表字段和模型属性,这样数据表改了只改fields里的字段就可以了,不用重新把控制器视图什么的都改一遍。
另外unset后不是在load时过滤而是直接删除和数据表的关联,在该模型内就好像属性或字段不存在一样。
这个貌似没有你说的那个过滤load功能啊。只是返回模型数据时候有用,比如你表里是username你想返回成nickname
如题,我自己写了一个自定义函数 按照YII2规范 应该放在YII2中哪里,在模板中想调用 应该怎么调用 。?谢谢
写个 helper 类放在 app\components\ 里,调用跟 yii\helpers\Html 一样的方式
可以看下这个 自定义函数放哪儿
写一个helper,然后里面的方法用静态的
$info=array('name'=>$model->name,'E_mail'=>$model->email,'phone'=>$model->phone);
上面的语句和下面的语句有什么区别 ,打印结果都一样
$info['name'] = $model->name;
$info['E_mail'] = $model->email;
$info['phone'] = $model->phone;
为什么上面的存储失败 下面的可以存储进数据库
第一个是初始化一个数组,然后覆盖了$info,此时$info就是一个纯数组,所以调save()没用,第二个是给$info对象的属性赋值,赋完值再调save
好好学一下markdown语法,不要每次发帖都要我帮你改。另外这位同学今天早上在教程里发垃圾帖,在这里警告你一次,如果再发就封号了。
一看2个 $info 就不相同,数组有待加强
字段要写完整,如果表还有必填字段,都要赋值$info=array(...)
// 新建一个数组,并赋值给 $info$info->save();
// save()
是 (ActiveRecord extends) BaseActiveRecord
的方法
表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.*’)
<?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
第一个是必填,第二个是验证格式
use Yii;
use yii\web\Controller;
别人写的框架,不是你写的;当然,你要是觉得第一个大写不好看,你可以自己写框架,自己定义基础类;
(^__^) 嘻嘻
http://www.yiichina.com/doc
文档多看看,都是些基础性知识.
找下度娘,都有答案.
规范化,定制化
我在练习权威手册上的form表单,我打完代码之后看了眼浏览器,表单的name显示的是model层的名字,1.这个是为啥呢。2.我要怎么才能设置form表单的name呀
直接在属性配置里(options)头写name就行
在from的model里面,实现attributeLabels()方法。比如
我先是按照手册在model层引用了Activerecord 之后view里面写了三个表单,我获取不到值啊 咋整呀 我都乱死了
Yii::$app->request->post() ( or get() )
基本的描述代码都没有啊
1、$dataProvider = $searchModel->search(Yii::$app->request->queryParams);这种模型查出来的数据 用于
<?= GridView::widget([
'dataProvider' => $dataProvider //这样的表单部件
2、
$mdoel = mdoel::find()->where($map)->one();
<?=DetailView::widget([
'model' => $model,//这种数据用于这样的表单。
我理解为第一种为搜索模型,第二种为数据模型。 我现在做一个小需求,出一张表,一个页面,但是展出方式却要用到二种表单。那我是不是要做二次model查询。才能做到。但是觉得这方法可能有缺。。如是上来问下各位。谢谢!!
你直接返回model到视图不就行了.dataprovider不也是基于model的么
在用$model->dirtyAttributes
的时候。遇到一个很奇怪的问题,以user表为例,如果在Models中rules里面定义 [['status'],'integer']
不管status的值是否改变,打印$model->dirtyAttributes都会Array([status] => 10)
,如果去掉[['status'],'integer']
,不管status的值是否改变,打印$model->dirtyAttributes
都会为空。
这个如何判断我提交的数据是否变化。
http://www.yiichina.com/question/1785
DirtyAttributes :
大概定義 => 顯現汙染的屬性
假使是 INSERT
狀態 dirtyAttributes
都應當出現填入的欄位值
以下提出 UPDATE
狀態
參考文獻 :
En :
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#dirty-attributes
Cn :
http://www.yiichina.com/doc/guide/2.0/db-active-record
$model->dirtyAttributes使用的是全等(===)校验,数据库查出来的都是string类型