我正在尝试使用Eloquent的子查询来获取一些数据,但是dd
ing不返回任何内容。另外
$discountArticles = $discountTableItemIdIn
->where('recipient_type', '=', 'article')
->toArray();
或这个
$discountArticles = $discountTableItemIdIn
->where('recipient_id', '=', $articleId)
->toArray();
做得好。
但是,当我尝试这样的操作时,它会失败(或者什么也不返回):
$discountArticles = $discountTableItemIdIn->where(function ($subQuery) {
$subQuery
->where('recipient_type', '=', 'article')
->where('recipient_id', '=', $articleId);
})->toArray();
我知道我可以在同一个集合上进行单独的查询,并执行array_merge
,但是我想让这种方式起作用。不知道发生了什么。
答案 0 :(得分:1)
那么$discountTableItemIdIn
是整个表的集合吗?这意味着您将需要不同的功能,因为集合上的->where()
逻辑与其在生成器(雄辩的)实例上的工作方式不同。
尝试使用filter()
:
$discountArticles = $discountTableItemIdIn->filter(function ($item) use($articleId) {
return $item->recipient_type == "article" && $item->recipient_id == $articleId;
})->toArray();
这将为您的$discountTableItemIdIn
集合过滤类型为article
且recipient_id
包含$articleId
的记录<script>
function first(){
$('#videoObj').remove();
$('<iframe id="videoObj" width="1280 " height="720" src="http://www.mysiteetisym.com/videos/KidsOnTrampoline.mp4" frameborder="0" allowfullscreen></iframe>').prependTo('#vholder');
}
function second(){
$('#videoObj').remove();
$('<iframe id="videoObj" width="1280" height="720" src="http://www.mysiteetisym.com/videos/WaterFight.mp4" frameborder="0" allowfullscreen></iframe>').prependTo('#vholder');
}
function third(){
$('#videoObj').remove();
$('<iframe id="videoObj" width="1280 " height="720" src="http://www.mysiteetisym.com/videos/FourWheelingRace.mp4" frameborder="0" allowfullscreen></iframe>').prependTo('#vholder');
}
function fourth(){
$('#videoObj').remove();
$('<iframe id="videoObj" width="1280 " height="720" src="http://www.mysiteetisym.com/videos/CookingWithDebbie.mp4" frameborder="0" allowfullscreen></iframe>').prependTo('#vholder');
}
</script>
的记录,返回一个新集合并转换到一个数组。
请注意,这效率很低;您应该避免将整个表加载到集合中,而只是使用问题中的子查询逻辑直接查询表。