[英]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.