问题标签 [yii2-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
yii2-model - 尝试使用 yii2 非表模型 $model->save() 时出现 yii\base\UnknownMethodException 错误
尝试执行 $model->save(); 时出现 Calling unknown method: app\modules\employee\models\NewEmployeeForm::save() 错误;
我假设 save() 方法是从 Model 继承的,但后来发生了这种情况。我需要编写自己的保存方法吗?我想遵循yii2的做事方式。
下面是我的模型
提前致谢
yii - 将 Yii 转换为 Yii 2.0:getRestParams()
从 Yii 到 Yii 2.0 如何写这行代码:
Yii::app()->getRequest()->getRestParams()
?
yii2 - Yii2:我可以使用场景为不同的动作指定不同的模型字段集吗?
我可以在 Yii2 模型页面(http://www.yiiframework.com/doc-2.0/yii-base-model.html)中看到,在“字段”部分,您可以设置“基于某些字段的不同列表上下文信息。例如,根据 $scenario 或当前应用程序用户的权限,您可能会返回不同的可见字段集或过滤掉某些字段。
但是,场景文档(http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios)说场景是为模型属性验证创建不同的上下文。
我正在使用 Yii2 Restful API,我必须使用默认操作(actionIndex、actionView、...)从模型中获取数据并显示为 API 结果。我知道我可以覆盖这些方法(http://www.yiiframework.com/doc-2.0/guide-rest-controllers.html#extending-active-controller),但我怎么能在这些方法中使用不同的集合字段(取决于不同的场景)?
我需要为actionIndex(项目列表)输出field1、field2、field3,但我想为actionView(项目列表)输出field1、field2、field3、field4。
php - Yii2 Gridview 按权限过滤
我有一个超级管理员,可以创建用户并为每个用户分配特定的位置。这存储在一个简单的表中,我们在其中获取用户的 ID 和位置的 ID。
然后,我有一张客户表。每个客户端还有一个名为 loc_id 的位置。如何过滤,以便在 Gridview 中用户只能看到居住在用户有权查看的位置的客户端(用户是一种可以在其管辖范围内操作客户端数据的管理员)?
我通过
然后找到他可以查看的位置
但是现在如何将它应用到具有搜索模型和 DataProvider 的标准 Gridview,以便我仍然可以按其他属性对 GridView 进行过滤和排序?
sql - Yii2 activerecord 意外结果,with() 回调函数有限制
我在使用 Yii2 构建查询时遇到问题。
假设我们有四个相关模型:Customer、Order、Orderitem 和 Orderitempicture。
Order与Customer相关,Orderitem与Order相关,Orderitempicture与Orderitem相关。
下面是代码:
这是调试器中执行的语句之一:
现在我的问题出在这一行:
$q->select(['id', 'src_thumb', 'orderitem_id'])->orderBy("id desc")->limit(1);
我正在尝试为每个订单项获取一个订单项图片,但是,发生的情况是获取订单项图片的 SQL 被合并到一个语句中,并且限制应用于该语句,所以结果是我只得到一个订单项图片一个订单项,其余的我一无所获。
如何为每个父母设置一个孩子的限制?有没有办法告诉 Yii 为父项中的每条记录创建多个查询并设置限制而不是创建一个查询?
yii2 - 将布尔值设为 true 或 false 而不是 1 或 0
我使用的是 MySql 数据库,所以我在 db 模式中将列类型定义为 Tinyint(1)。
在我的 ActiveRecord 中,我设置了布尔验证器。保存逻辑按预期工作。
我现在想要的是,当我调用 Yii2 REST 服务时,返回布尔字段为 true 或 false 而不是 1 或 0,因为在客户端,框架带有严格的比较 (===) 并且 1 与 true 不同。
当然,我可以在发送内容之前手动覆盖该值,或者在将其加载到模型中之前在客户端覆盖该值,但我希望有一个更简洁的解决方案。
activerecord - yii2 通过关系列获取活动记录
我需要选择具有相关 AR 和特定列值的 ActiveRecord。
情况:“用户”可能有许多“分支” - 通过联结表,并且分支与部门相关。我有department_id
,并且我想选择拥有来自这个部门的分支机构的用户。
部门:
分支:
问题是,我不想以任何方式从 Department 访问它(例如 $department->getUsers()
....),但我想在ActiveQuery
.
所以我可以选择像这样的用户:
先感谢您 !
transactions - Yii2 中带有回调的 Db 事务
我有在 Yii2 中使用 DB 事务的简单代码,这会更新用户余额并在用户余额历史记录中添加一条新记录。
我应该经常使用数据库事务来保存数据完整性。但是像上面这样处理数据库事务需要很多代码行,所以我创建了以下函数来调动我的代码:
使用此功能,我可以处理如下事务:
如您所见,第二种方式使用事务非常舒适。但是在这一点上,我不确定该dbTransaction
功能是否正常工作?代码审查并指出哪些点潜在问题值得赞赏。谢谢
yii2 - Yii2 从相关模型中仅选择几列
在控制器中我有:
在 WarehouseItem 模型中,我有标准(由 gii 创建)关系声明:
如何控制从“用户”关系中获取哪些列数据?我目前得到所有不好的列,因为这些数据以 JSON 格式发送到 Angular。现在我必须循环遍历 $items 并过滤掉我不想发送的所有列。
yii2 - Yii2如何对表进行分区?
一个名为 demo 的表,现在需要像 demo1,demo2,demo3,....,demo10 一样对其进行分区
那么如何在 Yii2 上对表进行分区呢?
我可能知道应该在 Model.getTableName 中添加一个方法。