我是这个
$reviewModel=Review::model()->findAll();
现在我想对$ reviewModel执行搜索操作,比方说我想搜索id为1的用户是否发布了评论。所以yii提供了任何功能。
注意:我不想使用 $ reviewModel =评价::模型() - >的findAll(阵列( '状态'=> ''));就像我一样 需要所有评论&然后进行搜索。
答案 0 :(得分:0)
这是我推荐的,也是良好的设计实践,它还可以实现数据库的最佳性能,+减少查询量。我会让你的评论与用户有关系。用户将发布许多评论。所以用户HAS_MANY评论。和审查和HAS_ONE用户。所以使用它并创建一个外键来建立关系。
因此,在您的用户模型(Relations)中,ID具有以下内容:
'reviews' => array(self::HAS_MANY, 'Review', 'originator),
现在您的评论模型ID中包含以下内容:
'user' => array(self::BELONGS_TO, 'User', 'originator'),
完成所有操作后,您需要做的就是遍历所有用户评论。如果它为null,则它们没有任何评论。
$user = User::model()->findbyPk(1);
和user->评论将包含该用户的所有评论。
答案 1 :(得分:0)
不是我知道(如果我理解你的问题)。 Yii提供了各种方法来询问你想从数据库中得到什么,而不是从内存中的一系列活动记录模型中询问。
如果你想这样做,那么就像你已经做的那样获取数据数组,然后使用PHP迭代模型数组,寻找你想要的东西。
答案 2 :(得分:0)
您可以手动过滤它们。例如:
$reviewModel=Review::model()->findAll();
$matched = false;
foreach($reviewModel as $r) //cycle through each review
{
if($r->user == 1) //check if user is desired
{
$matched = true; //set matched as true
break; //stop searching, as we already found one
}
}
如果要搜索多个内容,可以使用数组进行匹配,然后检查该数组。
$reviewModel=Review::model()->findAll();
$wanted = array(0=>false,3=>false,6=>false,8=>false);
foreach($reviewModel as $r) //cycle through each review
{
if(isset($wanted[$r->user]) and !$wanted[$r->user]) //check if user is in wanted list and still false
{
$wanted[$r->user] == true; //set appropiate user to true
}
}