我已经显示(仅显示,而不是完成CRUD)查询的结果,其构建如下:
SELECT SUM(a) AS ab, b, COUNT(*) as C
FROM x
INNER JOIN y
ON y.a = x.a
WHERE b=123
GROUP BY b
因此,我在SearchModel的search()方法中使用ActiveRecord构建了这个查询。
在表a的模型中,我添加了一个hasOne()-relation。
为了显示这个查询的数据,我使用了GridView。在它的列数组中,我使用了y.b等等...
我的问题是:表x中的列显示正确,但对于表y中的每个“连接列”,它都显示(未设置)。
如
根据文档,我正在(希望)使用be 2的ActiveRecord实现,它的使用方式是正确的。
问题
在一个非常简单的设置中,表之间有着简单的关系,获取10个结果是快速的,100是慢的。1000是不可能的。数据库非常小,索引非常完善。问题在于Yii2 2请求数据的方式,而不是数据库本身。
我使用的标准ActiveDataProvider如下:
$provider = new ActiveDataProvider([
'query' => Post::find(),
'pagination' => false // to get all r
它们之间有三个相互关系的模型。示例
class A extends ActiveRecord
{
public static function tableName(){
return 'tbl_a';
}
public function getB()
{
return $this->hasOne(B::className(), ['column' => 'column']);
}
}
class B extends ActiveRecord
{
publ
以下是表的结构:
Table BaseTable
id (primary key) INT
description VARCHAR(255)
Table ChildTable
id (primary key)(foreign key reference to BaseTable) INT
child_property VARCHAR(255)
它实际上是数据库表中的继承关系。
然后利用gii生成具有关系函数的模型,并对ChildTable进行CRUD操作。以下是ChildTable中的关系函数:
public function getBaseTable()
{
我有两个型号
class Employer(models.Model):
name = models.CharField(max_length=300, blank=False)
id = models.IntegerField()
status = models.IntegerField()
eminence = models.IntegerField(null=False,default=4)
class JobTitle(models.Model)
name = models.CharField(max_length=300, blan
我有一张桌子message_thread
id
sender_id
recipient_id
我希望在我的User模型中声明一个关系,它将按如下方式获取所有消息线程:
SELECT *
FROM message_thread
WHERE sender_id = {user.id}
OR recipent_id = {user.id}
我尝试了以下几点:
public function getMessageThreads()
{
return $this->hasMany(MessageThread::className(), ['sender_id' =&
我有一个表,它有来自不同来源的不同类型的文本数据,通过类型lang、sourceId标识,并存储在字段text中。是否有活动记录关系返回,不是表的对象,而是字段text的值,在oher词,标量查询,通过关系?
例:现在我有:
$modelName->RelationName->text) //field name storing expexted data, returns string.
所希望的方式是:
$modelName->RelationName//text field value returned only.
我有模特
class Run < ActiveRecord::Base
belongs_to :race
end
class Race < ActiveRecord::Base
has_many :runs
end
Race有日期字段,run有名称字段。
我想要一个查询显示所有的运行从特定的名称,按日期字段排序在比赛中。
我试过跟随,但没有正确的排序,结果是随机显示。
Run.where(:name => 'foo').joins(:race).order('races.date ASC')
考虑到这个问题可能在日期字段,我也尝试了排
我有三个Yii2 ActiveRecord模型:Emplpoyee,Department和Organization。
Employee必须有一个Department或一个Organization,这是通过验证确保的(如果department_id和organization_id都是null,或者两者都不是null,则失败)。Department必须有一个Organization,它是通过hasOne()建立的标准yii2 ORM关系。
Gii为员工/组织关系创建了此代码:
class Employee
{
public function getOrganization()
{
我有一个应用程序设置问题:(针对一个旅游网站)
我的模型是
class User < ActiveRecord::Base
end
class House < ActiveRecord::Base
end
class Apartment < ActiveRecord::Base
end
class Boutique < ActiveRecord::Base
end
class City < ActiveRecord::Base
end
class Activity < ActiveRecord::Base
end
我想在用户模型中添加一个“我去过那里”,“
目前我的模型中有:
class RoutePair < ActiveRecord
belongs_to :flying_airline, class_name: 'Airline'
belongs_to :home_airline, class_name: 'Airline'
end
我正在尝试编写一个查询,首先按飞行航空公司名称排序,然后按国内航空公司名称排序。我的预期结果将如下所示:
AirAsia Air Hong Kong
AirAsia Eastern Air Lines
AirAsia Cebu Pacific
Cebu Pacific
假设有一个预订系统,用于预订某个事件的时间段。 我有一个事件模型和一个time_slot模型。每个事件都有man time_slots,并且每个槽属于一个事件 class Event < ActiveRecord::Base
has_many :time_slot
end
class TimeSlot < ActiveRecord::Base
belongs_to :event
end 当我执行Event.find(some_id)时,如何根据其模型上的字段对返回的时隙进行排序,例如'slot_time‘
我有以下三种模式和它们之间的关系:
class Calendar < ActiveRecord::Base
has_many:fiscalcalendars
has_many:voucherdatas ,:through => :fiscalcalendars
end
class Fiscalcalendar < ActiveRecord::Base
belongs_to :calendar
has_many :voucherdatas
end
class Voucherdata < ActiveRecord::Base
has_many
我有一个有很多会议的客户模型。
class Client < ActiveRecord::Base
has_many :meetings
end
class Meeting < ActiveRecord::Base
belongs_to :client
end
我希望生成一个ActiveRecord查询,该查询将返回按最近一次会议的顺序(由meeting_time列确定)排序的客户端,但不知道如何执行此操作。我显然需要以某种方式连接表,但我不知道如何在AR中生成合适的子查询。如何为每个客户端编写只包含1个会议的连接,特别是最近的会议(即给定meetings.cli
如何处理指向同一活动记录的多个逆关系?例如:
class Bicycle extends ActiveRecord {
public function getFrontWheel() {
return $this
->hasOne(Wheel::class, ['id' => 'front_wheel_id'])
->inverseOf('bicycles');
}
public function getRearWheel() {