是否可以在Yii中的ActiveRecord中进行子查询?
我有这样的查询:
select * from table1
where table1.field1 in (select table2.field2 from table2)
我目前正在使用以下代码:
object1::model()->findAll(array('condition'=>'t.field1 in (select table2.field2 from table2)'))
[编辑]
我想知道是否有一种方法来构造子查询而不使用SQL,并且不使用连接.
有什么解决方案吗?
并提前感谢.
使用Yii,我如何从Active Record中获取数组.
说这样的话:
array('foo', 'bar', 'lala')
从这样的事情:
MyTable::model()->findall()
Run Code Online (Sandbox Code Playgroud) 我和Yii&Jquery有一个奇怪的问题:
当我打开一个在localhost上使用ajax/jquery的页面时,Yii会自动添加资产包含对页面的调用:
<link rel="stylesheet" type="text/css" href="/PATH/assets/f72b359d/style.css" />
<script type="text/javascript" src="/PATH/assets/2e442e1a/jquery.js"></script>
<script type="text/javascript" src="/PATH/assets/2e442e1a/jquery.cookie.js"></script>
Run Code Online (Sandbox Code Playgroud)
但是,当我在服务器上运行相同的代码时,Yii没有这样做,没有Jquery可用.
如果有人能指导解决问题,我会很感激.
我需要在控制器操作中使用某些分页变量.
如:
1.当前页码
2.当前页面偏移量
3.显示总记录
即显示2005年的31至40条记录
我尝试了以下方法:
$dataProvider = NodesTerms::getNodesDataFromTerms($nodeId) ;
$pagination = $dataProvider->getPagination();
var_dump($pagination->getPageCount());
//var_dump($pagination->currentPage);
Run Code Online (Sandbox Code Playgroud)
我可以得到分页对象,但零(0)$pagination->currentPage 或$pagination->offset等等....
我需要这些信息来动态生成元页面title和description页面列表的操作,例如pagetitle:第3页,共10页,用于American Recipes ...
感谢任何帮助.
是否有一种方法在Yii中注册js或css文件,以便在资产管理器加载后加载它们.
我使用css文件来覆盖某些Yii扩展的样式,但是Yii在扩展名生成的资产之前包含了我的文件.
我知道我可以更改扩展名以从资产管理器中删除css文件并手动添加它们,registerCssFile但这不是我想要这样做的方式.
这就是我所拥有的:
<head>
...
<link rel="stylesheet" type="text/css" href="/css/MY_CSS.css" />
...
<link rel="stylesheet" type="text/css" href="/assets/8e838803/css/EXTENSION_CSS.css" />
...
</head>
Run Code Online (Sandbox Code Playgroud)
这就是我想要的:
<head>
...
<link rel="stylesheet" type="text/css" href="/assets/8e838803/css/EXTENSION_CSS.css" />
...
<link rel="stylesheet" type="text/css" href="/css/MY_CSS.css" /> <!-- the last one -->
</head>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
我正在尝试创建自己的xml站点地图.一切都已完成,除了我认为最容易的部分.如何获得网站上所有页面的列表?我在/ site文件夹和其他一些文件夹中有很多视图.有没有办法明确请求他们的URL或可能通过控制器?
我不想使用扩展名
我正在尝试在表单中启用ajax验证,我已经在表单中添加了正确的参数,但它不起作用,这是我的代码:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
'htmlOptions' => array(
'enctype' => 'multipart/form-data',
'enableClientValidation'=>true
),
)); ?>
Run Code Online (Sandbox Code Playgroud)
请指教.
我正在使用Yii2框架,我想生成这样的HTML代码
<input type="checkbox" id="queue-order" name="Queue[order]" value="1" checked>
Run Code Online (Sandbox Code Playgroud)
在使用ActiveForm的视图中.
我试过了
echo $form->field($model, 'order')
->checkBox(['label' => ..., 'uncheck' => null, 'checked' => true]);
Run Code Online (Sandbox Code Playgroud)
以及
echo $form->field($model, 'order')
->checkBox(['label' => ..., 'uncheck' => null, 'checked' => 'checked']);
Run Code Online (Sandbox Code Playgroud)
但是生成的html代码中没有出现所需的字符串"checked".
奇怪的是,如果我用"选中"代替"选中"
echo $form->field($model, 'order')
->checkBox(['label' => ..., 'uncheck' => null, 'selected' => true]);
Run Code Online (Sandbox Code Playgroud)
然后生成的html代码包含属性"selected":
<input type="checkbox" id="queue-order" name="Queue[order]" value="1" selected>
Run Code Online (Sandbox Code Playgroud)
那么,如何为具有"已检查"属性的复选框生成html代码?
这是源代码,我需要检测ID(请参阅下面两个查询之间的标记位置).
$connection = Yii::app()->db;
$transaction=$connection->beginTransaction();
try {
$q = "INSERT INTO `someTable1` .... ";
$connection->createCommand($q)->execute(); // Single Row Inserted
// HERE!! How to get the last insert ID from query above
$q = "INSERT INTO `someTable2` ....
WHERE id = LAST_INSERT_ID_FROM_FIRST_QUERY ";
$connection->createCommand($q)->execute();
$transaction->commit();
} catch (Exception $e) {
// react on exception
$trans->rollback();
}
Run Code Online (Sandbox Code Playgroud)
最合适的方法是什么?
如何将Yii 1.x版本升级到Yii 2.0最新版本?我正在使用ubuntu OS,Process将我的旧Yii更新为新的Yii发行版2.0?
yii ×10
php ×6
active-form ×1
activerecord ×1
ajax ×1
arrays ×1
css ×1
dao ×1
html ×1
jquery ×1
lastinsertid ×1
registration ×1
sitemap ×1
subquery ×1
transactions ×1
yii2 ×1