我有一个简单的Question
模型与 oneToMany 关系本身,名为latest_sub_question
,如下所示:
class Question extends Model
{
useSoftDeletes;
protected $primaryKey = 'question_id';
public function latest_sub_question()
{
return $this->hasOne(Question::class , 'parent', 'question_id')->latest();
}
}
与questions
模型相关的 Question
表包含关于 30k 记录的大型数据集。
现在在控制器方法中,我想获取所有记录(请注意,我想要所有记录,因此我不想使用chunk
或 paginations 方法)。为此我写了这个:
function questionsDatatable(Request $request)
{
$questions = Question::with('latest_sub_question');
//Applies some constraint method on $questions here
$questions = $questions->get();
//Eloquent returns a query builder object and beacause I want to run `map` function should convert it to a collection.
$questions = $questions->map(function ($item, $key)
{
return is_null($item->latest_sub_question) ? $item : $item->latest_sub_question;
});
$questions->sortByDesc('created_at');
return $questions;
}
但似乎由于$questions
包含大数据,laravel无法解析它并且始终不会返回任何内容。