我总是设置表前缀 - 这个帖子可以说我的前缀是abc_
.所以common\config\main-local.php
.我有:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=database',
'username' => 'user',
'password' => 'pwd',
'charset' => 'utf8',
'tablePrefix' => 'abc_',
],
...
Run Code Online (Sandbox Code Playgroud)
我曾在Yii1上工作并使用gii生成模型.在这个版本中它生成了如下文件:table.php
.
现在我使用Yii2并学习差异:
gii
生成类似的文件abc_table.php
.是的 - 我选中了"使用表格前缀".
这不行,因为前缀应该是透明的.可以请任何人告诉我我做错了什么?
我有一个奇怪的问题,我认为是配置相关的.我有漂亮的网址,我的路由定义为:
'/customers/update/<id:\d+>' => '/customers/default/update'
Run Code Online (Sandbox Code Playgroud)
为了衡量我的行动:
public function actionUpdate($id) {}
Run Code Online (Sandbox Code Playgroud)
我的控制器是模块的一部分并正确映射但我的动作似乎没有接收参数.如果我省略了路由和动作中的参数,则会正确调用操作,如果我给参数一个默认值,则一切都按预期工作.总而言之,我得到一个错误,说缺少参数1.
有任何想法吗?
我是Yii2的新手,我正在尝试使用依赖注入.
在我的方案一个Pedido可以有一个Servico和Servico有许多Pedidos.这是Pedido类模型:
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "pedido".
*
* @property integer $id
* @property string $data
* @property integer $servico_id
*
* @property Servico $servico
*/
class Pedido extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'pedido';
}
public function rules()
{
return [
[['data', 'servico_id'], 'required'],
[['data'], 'safe'],
[['servico_id'], 'integer']
];
}
public function attributeLabels()
{
return [
'id' => …
Run Code Online (Sandbox Code Playgroud) 我尝试使用LEFT JOIN发送SQL请求,但它不显示table2
表中的数据.
public static function top($limit)
{
return self::findBySql("
SELECT * FROM table 1 g1
LEFT JOIN table2 s1
ON (g1.id = s1.g_id AND s1.id = (
SELECT MAX(id)
FROM table2 s2 WHERE s2.g_id = g1.id
))
LIMIT :limit",
[':limit' => $limit]
)->all();
}
Run Code Online (Sandbox Code Playgroud)