繁体   English   中英

我如何从两个表中获取数据?

[英]how can i miscellaneously fetch data from two tables?

我正在laravel的问题解答网站上工作,我的网站使用滚动分页将问题视图管理为https://in.pinterest.com 我已经在“问题”表中解决了我的问题。 现在,我想介绍新功能“挑战”,并且我想同时显示“问题”和“挑战”。 我需要在单循环中执行此操作。 我怎样才能做到这一点?

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

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

希望您可以随心所欲地做。 通过阅读问题对所使用的结构不够了解,我将建议一些解决方案。

1)如果您的问题/挑战的结构相似。 您可以直接在数据库中创建视图,并使用以下方法将它们合并在一起:JOIN(SQL查询: https : //dev.mysql.com/doc/refman/5.0/en/join.html )。

2)您可以将两个表合并为一个事务,并在服务器端将其合并。 这效率较低,但仍然可行,具体取决于您需要在表上调用的操作量。

您需要使用工会

$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);

我无法通过数据库查询来做到这一点,但是我做到了以下。

<?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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM