Php Laravel约简查询

Php Laravel约简查询,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我使用Laravel Elount,我有以下代码: <?php $bulk = Bulk::where('id', 'bulkid1'); echo $bulk->info; foreach($bulk->models as $model) { echo $model->info; $lastreport = $model->reports()->getQuery()->orderBy('created_at', 'desc')->firs

我使用Laravel Elount,我有以下代码:

<?php
$bulk = Bulk::where('id', 'bulkid1');
echo $bulk->info;
foreach($bulk->models as $model) {
  echo $model->info;
  $lastreport = $model->reports()->getQuery()->orderBy('created_at', 'desc')->first();
  echo $lastreport->message;
}    
?>
数据库伪代码:

TABLE bulks
 id, info

TABLE models
id, bulk_id, info

TABLE reports
id, model_id, message
这是解决此问题的laravel解决方案

在你的情况下,你应该:

<?php
$bulk = Bulk::with(['models', 'models.reports' => function ($query) { 
      return $query->orderBy('created_at', 'desc');           
   } 
])->where('id', 'bulkid1')->first();
echo $bulk->info;
foreach($bulk->models as $model) {
  echo $model->info;
  $lastreport = $model->reports->first();
  echo $lastreport->message;
}    

您的数据库是什么样子的?您指的是关系?1批量有*个模型,每个模型有*个报告。我添加了一些伪代码。谢谢你的快速回答。这正是我要找的!
<?php
$bulk = Bulk::with(['models', 'models.reports' => function ($query) { 
      return $query->orderBy('created_at', 'desc');           
   } 
])->where('id', 'bulkid1')->first();
echo $bulk->info;
foreach($bulk->models as $model) {
  echo $model->info;
  $lastreport = $model->reports->first();
  echo $lastreport->message;
}