Info::deleteAll('id>:id',array(':id'=>2));
我要删除ID大于2的数据库数据 结果系统提示我未定义的变量!咋回事呀 Info是模型层的名字
Info::deleteAll(['>','id',2])
这样
Info::deleteAll('id>:id',array(':id'=>2));
我要删除ID大于2的数据库数据 结果系统提示我未定义的变量!咋回事呀 Info是模型层的名字
Info::deleteAll(['>','id',2])
这样
1.$app=new yii\web\Application($config);
2.
class Yii extends \yii\BaseYii
{
}
以上的
yii\web\Application
yii\BaseYii
是什么意思呢?
命名空间:http://php.net/manual/zh/language.namespaces.rationale.php
有何作用:避免命名重复;顾名思义,我定义多个区域(命名空间),彼此之间的区域互不干扰,但同区域下却不能有相同的命名;
命名空间, 他类似于指向某个目录,该目录下不能有同名的文件(相同的命名空间下不能有同名的类)一开始是为了解决类名重复问题。
后来用做类自动加载
$demo=Info::find()->where(['id'=>2])->all();
$demo=array('name'=>$model->name,'E_mail'=>$model->email,'phone'=>$model->phone);
$info->save();
应该怎么改了 研究好久啦啊 运行不报错 数据库没有被更改 只是添加了一条空数据
已经解决 谢谢大家 真心感谢
若已经存在$id 记录,则更新,若不存在,则写入新数据记录。
比如说我有一个文章模型 title content auther 这三个字段是必填的
然后我还有一些其他的非必填字段 time isPublish 等等
我在\models\Post.php
这个文件里面添加了规则
public function rules()
{
return [
[['title', 'content', 'isPublish'], 'required']
];
}
要求这三个字段必填
但是当我给其他属性赋值的时候(比如time字段)再 model->save()
只会保存验证的 三个字段 其余的字段全部都保存不进去 为什么
确实会保存不进去,一般不需要验证的,都加一个['time', 'safe']
, 告诉yii这个属性是安全的,不需要验证
不批量赋值可以保存吧。。。
第一步,配置config/main.php里面components的静态启用和路由规则启用
'urlManager' => [
'enablePrettyUrl' => true, //启用路由
'enablePrettyUrl' => true, // 启用 URL美化
'showScriptName' => false,//禁用 index.php
'suffix'=>'.html',
'rules'=>[
'<controller:poor-per-info>/<action:get-area-list>/<pid:\d+>.html'=>'<controller>/<action>',
],
],
第二步按酱油老师说的配置那个hatccess文件
RewriteEngine on
# 如果是一个目录或者文件,就访问目录或文件
RewriteCond %{REQUEST_FILENAME} !-d
# 如果文件存在,就直接访问文件,不进行下面的RewriteRule
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php
第三步:然后我通过这个地址就总是出现404错误呢
http://www.demo.com/poor-per-info/get-area-list/2.html?_=1457167371875
但是我通过这个地址来测试就是正常访问200OK的成功页呢:
http://www.demo.com/poor-per-info/get-area-list.html?_=1457167440517
我只是多了一个pid的参数而已,怎么就总是出现404错误的呢?
我该配置的两个地方都是配置了的, 是不是还要在PoorPerInfo控制器里加个use yii\web\urlManager,但是我觉得这样肯定不对!
求大神们指导一下,还有什么地方需要配置的
pid 后面的 .html 就不要了,
suffix 就是后缀了。
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
获取不到微信服务器post给我的xml数据
在网上查了下另一种写法$postStr = file_get_contents('php://input');
就可以获取到了
什么原因?
这个$GLOBALS是可以打印的,应该不是register_globals禁止的问题吧
xml的content-type是application/xml
,$_POST($GLOBALS["HTTP_RAW_POST_DATA"])
都只能解析Content-Type:application/x-www-form-urlencoded
和Content-Type: multipart/form-data
,而php://input
的内容包括除了header之外的所有请求内容,无论任何content-type
frontend/modules/user/Module.php
namespace frontend\modules\user;
class Module extends \yii\base\Module
{
public $controllerNamespace = 'frontend\modules\user\controllers';
public function init()
{
parent::init();
//该模块必须登陆用户访问
if (\Yii::$app->user->isGuest){
return \Yii::$app->response->redirect(\Yii::$app->homeUrl);
}
return true;
}
}
return \Yii::$app->response->redirect(\Yii::$app->homeUrl);
这端代码能执行,就是不能跳转
下面是在controller里面实现的逻辑
Application.php
public function beforeAction($action)
{
if (!parent::beforeAction($action)) {
return false;
}
if (Yii::$app->user->isGuest){
return $this->redirect(['site/index']);
}
return true;
}
同样能执行到跳转这边,就是跳转不来
解决方案
user module 所有controller都会继承该ApplocationController
<?php
namespace frontend\modules\user\controllers;
use Yii;
use yii\web\Controller;
class ApplicationController extends Controller
{
public function beforeAction($action)
{
if (!parent::beforeAction($action)) {
return false;
}
if (Yii::$app->user->isGuest){
return $this->goHome()->send();//这边需要家send(),不然无法跳转,Yii 2.0.7
}
return true;
}
}
个人感觉逻辑不太对,登录认证应该在控制器中就控制了,而不是应该在模型中去判断,请求肯定是先到控制器,然后对应的action中进行处理,action负责加载一个数据模型,一般是从数据库中加载。那么,如果这个用户没有登录,应该在加载模型之前就判断好
return $this->goHome();
module.php
可以实现跳转。
我的头头解释的。
redirect可能有点类似于异步,在本地速度快,马上返回了302跳转,然后再return
线上网速慢,本地还没收到302跳转,就return了,init收到return后,就会继续往下执行
使用\Yii::$app->user->isGuest; 登陆前状态为1 登陆后 重新返回刷新登陆页面 就以下报错
没有user表,我数据库表是users。但是这个user是在哪里调用的?Database Exception – yii\db\Exception
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'qichunzhan.user' doesn't exist
The SQL being executed was: SELECT * FROM `user` WHERE (`id`='1') AND (`status`=10)
Error Info: Array
(
[0] => 42S02
[1] => 1146
[2] => Table 'qichunzhan.user' doesn't exist
)
↵
Caused by: PDOException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'qichunzhan.user' doesn't exist
in /Users/chenqi/NetBeansProjects/WEB/GitOschina/qichunzhan/vendor/yiisoft/yii2/db/Command.php at line 839
去User模型里把表改成users
那个user表最好不要动,楼主,除非熟悉了再动,我吃过很多亏.
应该在 common/models/user.php 在这里看看登录的
也有可能在你的loginform里面
我知道有一个属性可以设置行样式,但是这个属性代表了全部行的样式
‘rowOptions’=>[‘class’=>’text-center’],//行样式
其实我就是想让某列居中,不希望全部居中! 请问小伙伴们,有招解决不?
有一个headerOptions 的属性,
http://www.yiichina.com/doc/api/2.0/yii-grid-column#$headerOptions-detail
你可以去看看~
追代码 从源头解决 yii2 我发现这些问题都是由 Options 来设置的
。。。。。。
求find() one() all()详细介绍
http://www.yiichina.com/doc/api/2.0/yii-db-query
http://www.yiichina.com/doc/api/2.0/yii-db-activerecord
文档类说明,自己看
跟踪源码去看,详细介绍都写在那里了.