我正在使用Yii2 gridview小部件来显示数据.
我正在使用两个名为message和message_trigger的表.
在消息表列中object_model,Object_id.
在message_trigger中,列是object_id,object_name.
网格从表消息中获取值.所以网格字段是Object_model,Object_id.
现在我的问题是我需要表现出Object_name从表格message_trigger基础上,object_id从表中的消息.
在我的形式中,我使用了这样的网格
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'object_model',
'object_id',
['class' => 'yii\grid\ActionColumn', 'template' => '{view} {update} {delete} '],
],
]); ?>
Run Code Online (Sandbox Code Playgroud)
在我使用过的模型中
public function search($params){
$query = AlertTrigger::find()->where(['alert_id'=>$params['id']])->andWhere(['!=','status',2]);
$dataProvider = new ActiveDataProvider([
'query' => …Run Code Online (Sandbox Code Playgroud) 我在Yii2中遇到了一些问题.我需要创建一个包含三个下拉菜单的表单,该菜单询问用户一周中哪些时间最适合他或她.第一个菜单是一周中的几天,接下来的两个菜单是开始和结束时间.
但我的项目比这更雄心勃勃.我还需要允许用户指定任何时间配置,因此必须扩展表单并使其动态化,允许用户向表单添加更多下拉菜单以指定更多次.
我已经尝试了很多解决方案,但问题似乎在于用户创建的输入字段.我相信在Yii 1中有一种方法可以做到这一点,但Yii 2显然是这样的代码检修,旧的解决方法很少有用.我已经研究了许多扩展,特别是Krajee的扩展,虽然它们中的许多非常漂亮且用户友好,但它们不提供动态字段创建.我自己尝试了一些黑客,但没有任何工作,我想知道是否有办法在Yii 2中创建一个具有动态数量的输入字段的表单.如果没有,我很想写一些简单的Javascript和Php以外的Yii来完成工作,但我想留在框架内.
我目前没有收到使用以下配置的电子邮件,并且想知道是否与我的设置有关可能遗漏了某些内容或者它在MAMP localhost上无法正常工作?
common-local.php在common config目录下
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
Run Code Online (Sandbox Code Playgroud)
然后发送电子邮件(显示成功消息)
public function submitreview($email)
{
//return Yii::$app->mailer->compose(['html' => '@app/mail-templates/submitreview'])
return Yii::$app->mailer->compose()
->setTo($email)
->setFrom([$this->email => $this->name])
->setSubject($this->title)
->setTextBody($this->description)
->attachContent($this->file)
->send();
}
Run Code Online (Sandbox Code Playgroud) 当然,我可以Yii::$app->db->createCommand($sql)->query(),但如果我想用一个ActiveRecord::find()->where($conditions)来完成这项工作呢?
我想为yii2基本模板创建一个REST API.我按照以下链接.
我创建了一个名为users的控制台,名为UserController
<?php
namespace app\controllers;
use yii\rest\ActiveController;
class UserController extends ActiveController
{
public $modelClass = 'app\models\User';
}
?>
Run Code Online (Sandbox Code Playgroud)
并在网络上
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
],
],
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '4534',
'parsers' => [
'application/json' => 'yii\web\JsonParser', …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取关键字匹配的那些产品的所有类别及其数量(该类别中的产品数量).我试过的查询没有给我正确的结果.此外,我希望父类别直到1级和他们的计数.
例如,我正在尝试使用关键字手表,那么类别"手表"应该有一些计数.父类别"附件"及其后代类别的总和也计算在内.
我的表结构是:
tblProducts:产品分为5类,fldCategoryId1,fldCategoryId2,fldCategoryId3,fldCategoryId4和fldCategoryId5.fldProductStatus应为'A'
+-----------------------------+-------------------+
| Field | Type |
+-----------------------------+-------------------+
| fldUniqueId | bigint(20) |
| fldCategoryId1 | bigint(20) |
| fldCategoryId2 | bigint(20) |
| fldCategoryId3 | bigint(20) |
| fldCategoryId4 | bigint(20) |
| fldCategoryId5 | bigint(20) |
| fldProductStatus | enum('A','P','D') |
| fldForSearch | longtext |
+-----------------------------+-------------------+
Run Code Online (Sandbox Code Playgroud)
tblCategory:
+------------------------------+-----------------------+
| Field | Type |
+------------------------------+-----------------------+
| fldCategoryId | bigint(20) |
| fldCategoryName | varchar(128) |
| fldCategoryParent | int(11) |
| fldCategoryLevel | enum('0','1','2','3') …Run Code Online (Sandbox Code Playgroud) 我正在使用mocha-phantomjs配置成功运行我的测试用例.现在我正在使用Karma启动器运行这些测试.但我得到了这个问题Chai is not defined.
这是我的配置文件.
module.exports = function(config) {
config.set({
client: {
mocha: {
ui: 'tdd'
}
},
basePath: '',
frameworks: ['mocha'],
files: [
'web/js/*.js',
'test/lib/*.js',
'node_modules/chai/chai.js' //added this on suggestion of the answer in stackoverflow
],
exclude: [
],
preprocessors: {
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Firefox'],
singleRun: false,
});
};
Run Code Online (Sandbox Code Playgroud)

我研究过它,发现这个链接,
我的表结构是:
id name parent lft rgt
1 abc 0 2 3
2 def 1 4 5
3 geh 1 6 7
4 ijk 2 8 9
5 lmn 2 10 11
Run Code Online (Sandbox Code Playgroud)
我正在做的是首先获取所有记录,然后使用深度优先搜索(DFS)为所有可能的孩子搜索树。
public function fetchRecursive($src_arr, $currentId, $parentFound = false)
{
$cats = array();
foreach ($src_arr as $row) {
if ((!$parentFound && $row['id'] == $currentId) || $row['parent'] == $currentId) {
$rowData = array();
foreach ($row as $k => $v)
$rowData[$k] = $v;
$cats[] = $rowData;
if ($row['parent'] == $currentId) {
$cats …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个解决方案Active Record来获取单个查询中的分层数据.
我现在正在做的是首先获取所有数据,然后使用递归函数将数组转换为所需的数组.
$allUsers = User::find()
->asArray()
->all();
$arr = Yii::$app->TreeComponent->getUserChildren($allUsers, $userId, $userId);
Run Code Online (Sandbox Code Playgroud)
并在TreeComponent中
public function getUserChildren($src_arr, $currentId, $userId, $parentFound = false)
{
$cats = array();
foreach ($src_arr as $row) {
if ($row['id'] == $userId) {
$row['parent'] = "";
}
if ((!$parentFound && $row['id'] == $currentId) || $row['parent'] == $currentId) {
$rowData = array();
foreach ($row as $k => $v)
$rowData[$k] = $v;
$cats[] = $rowData;
if ($row['parent'] == $currentId) {
$cats = array_merge($cats, $this->fetchRecursive($src_arr, $row['id'], true));
} …Run Code Online (Sandbox Code Playgroud) 这是我的实际查询-
$dataProvider = new ActiveDataProvider([
'query' => UserProfile::find()->with(['user'])
]);
Run Code Online (Sandbox Code Playgroud)
用户表中存在“ 状态 ”字段。所以我想按状态!= 0过滤数据,但是失败。
我试过了-
1个
$dataProvider = new ActiveDataProvider([
'query' => UserProfile::find()->with(['user'])->where('user.status !=',0)
]);
Run Code Online (Sandbox Code Playgroud)
2
$dataProvider = new ActiveDataProvider([
'query' => UserProfile::find()->with(['user'])->where('<>','user.status',0)
]);
Run Code Online (Sandbox Code Playgroud)
没有一个有效。请让我怎么可能?
yii2 ×7
php ×4
activerecord ×2
javascript ×2
binary-tree ×1
gridview ×1
karma-mocha ×1
karma-runner ×1
mysql ×1
rest ×1
sql ×1
swiftmailer ×1
tree ×1
unit-testing ×1
yii2-model ×1
yii2-user ×1