我正在laravel的问答网站上工作,我的网站使用滚动分页管理问题视图为https://in.pinterest.com网站。我在"问题"中处理了我的问题。桌子。现在我想介绍新功能"挑战"我想错误地显示两个问题"和"挑战"。我需要在单循环中完成它。我怎么能这样做?
我目前的laravel查询构建器逻辑是:
$questions = DB::table('questions')->paginate(15);
答案 0 :(得分:0)
希望你可以随意做。通过阅读你的问题我不太了解你正在使用的结构,我会建议一些解决方案。
1)如果您的问题/挑战结构相似。您可以直接在DB中创建视图,并使用以下命令将它们合并在一起:JOIN(sql query:https://dev.mysql.com/doc/refman/5.0/en/join.html)。
2)您可以将两个表都放入单个事务中并将其合并到服务器端。这样效率稍差但仍然可行,具体取决于您需要在桌面上调用的操作量。
答案 1 :(得分:0)
您需要使用联合
$questions = DB::table('questions');
$challenges = DB::table('challenges');
return $questions->union($challenges)->paginate(15);
您可以在 union()返回的查询中添加一些其他约束或排序,然后再调用 paginate()
如果数组的列数不同,您可以列出需要获取的常见列:
$questions = DB::table('questions')->select('column1', 'column2');
$challenges = DB::table('challenges')->select('column1', 'column2');
return $questions->union($challenges)->paginate(15);
答案 2 :(得分:0)
我无法使用数据库查询,但我做了以下操作。
<?php
$challenge_count=count($challenges);
$idea_count=count($cards);
$loopCounter=($idea_count>$challenge_count)?$idea_count:$challenge_count;
?>
<section class="cards container-fluid">
<!-- mixed display of challenges and cards-->
<?php for($i=0;$i<$loopCounter;$i++):?>
<?php if (array_key_exists($i, $challenges)):
$challenge=$challenges[$i];?>
@include('partials.challenge')
<?php endif; ?>
<?php if (array_key_exists($i, $cards)):
$card=$cards[$i];?>
@include('partials.card')
<?php endif; ?>
<?php endfor;?>
</section>