gpt4 book ai didi

activerecord - Yii 条件关系

转载 作者:行者123 更新时间:2023-12-04 05:21:35 27 4
gpt4 key购买 nike

我有一个 chat带字段的表

 admin TINYINT
owner_id INTEGER

目标是在 Yii 中有两个关系:
'admin'=>array(
self::BELONGS_TO, 'Admin', 'owner_id',
'condition'=>'admin=1',
),

'user'=>array(
self::BELONGS_TO, 'User', 'owner_id',
'condition'=>'admin=0',
),

但是,我得到了 General error: 1 no such column: admin ,并且只能通过添加 all_ones 来管理和 all_zeros列到 Admin 表,所以我可以写
        'admin'=>array(
self::BELONGS_TO, 'Admin', array('owner_id' => 'id', 'admin' => 'all_ones'),
),


'user'=>array(
self::BELONGS_TO, 'User', array('owner_id' => 'id', 'admin' => 'all_zeros'),
),

在不使用此类黑客的情况下,我可以通过什么方式实现它?

最佳答案

解决方案1:

将您的关系放在用户模型上(因为关系条件确实过滤了相关模型,而不是定义了关系的模型)

//On the User model:

'chatsAdmin'=>array(
self::HAS_MANY, 'Chat', 'owner_id',
'condition'=>'admin=1',
),
'chats'=>array(
self::HAS_MANY, 'Chat', 'owner_id',
'condition'=>'admin=0',
),

解决方案2:

使用 finder 获取一组过滤的聊天记录(或 DataProvider)
//relation on chat (without condition!)
'user'=>array(self::BELONGS_TO, 'User', 'owner_id')

//finder on chat model, will return ALL (use CActiveDataProvider if you need paging..)

Chat::model()->with('user')->findAll('user.admin=:admin', array(':admin'=>1))

关于activerecord - Yii 条件关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com