我怎么能错误地从两个表中获取数据?

时间:2015-07-14 11:09:01

标签: mysql database laravel

我正在laravel的问答网站上工作,我的网站使用滚动分页管理问题视图为https://in.pinterest.com网站。我在"问题"中处理了我的问题。桌子。现在我想介绍新功能"挑战"我想错误地显示两个问题"和"挑战"。我需要在单循环中完成它。我怎么能这样做?

我目前的laravel查询构建器逻辑是:

$questions = DB::table('questions')->paginate(15);

3 个答案:

答案 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>