gpt4 book ai didi

PHP ActiveRecord - find_by_sql + 包含

转载 作者:行者123 更新时间:2023-11-29 21:50:58 25 4
gpt4 key购买 nike

我需要对 PHP ActiveRecord 使用自定义查询,因为我需要 UNION 语句,即使我在两个查询上查询同一个表。我希望能够将我的模型中作为 belongs_to 的列包含到结果中。

这是我的模型代码:

class FeedActivity extends MyModel {

static $table_name = 'feed_activity';

static $belongs_to = array(
array('user_reference', 'class_name' => 'User', 'foreign_key' => 'user_reference_id'),
array('follow', 'class_name' => 'Follow', 'foreign_key' => 'follow_id'),
array('challenge_user', 'class_name' => 'ChallengeUser', 'foreign_key' => 'challenge_user_id'),
);
}

我的查询:

$list = FeedActivity::find_by_sql('
(
SELECT
*
FROM
feed_activity
WHERE
challenge_user_id IS NOT NULL
)

UNION ALL

(
SELECT
feed_activity.*
FROM
feed_activity
JOIN
follow ON follow.id_follower = ' .(int) $user_id . '
AND follow.id = feed_activity.follow_id
WHERE
follow_id IS NOT NULL
LIMIT 0, 5
)

ORDER BY created_at DESC
LIMIT 0, 10

');

关于如何实现这一目标有什么想法吗?

谢谢

最佳答案

经过一夜良好的 sleep 后,我找到了一个快速而简单的解决方案。我对 MyModel (我所有模型的父类(super class))实现了以下方法:

public static function find_by_sql_including($sql, $include = null)
{
return static::table()->find_by_sql($sql, null, true, $include);
}

现在我做这样的查询:

FeedActivity::find_by_sql($sql, array('user_reference','follow','user_challenge'));

关于PHP ActiveRecord - find_by_sql + 包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33644381/

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