私はLaravelを使用しています。私はEloquentを使用してデータを取得したいと思います。効率的な方法でデータを分離する
マイコントローラ:
public function getquesdet(){
$id = Request::input('id');
$question = Question::where('q_id','=',$id)->with('qtags.tags')->with('comments')->with('answers')
->first();
$i=0;
$tagnames[]=0;
foreach ($question['qtags'] as $value) {
$tagnames[$i] = $value['tags']['tag'];
$i++;
}
$j=0;
$comments[]=0;
foreach ($question['comments'] as $value) {
$comments[$j] = $value['comment'];
$j++;
}
$k=0;
$answers[]=0;
foreach ($question['answers'] as $value) {
$answers[$k] = $value['answer'];
$k++;
}
return array('question'=>$question['title'],'body'=>$question['body'],'tags'=>$tagnames,'comments'=>$comments,'answer'=>$answers);
}
あなたが見ることができるように、私はforeach
ループの使用が効率的ではないと感じています。 for
ループを使用すると、さらに時間がかかることがあります。私が望むのは、これに効率的な回避策があるかどうかを知ることです。私はそれが効率的なソリューションのように見えると思います
実際には、 'for'ループを使用するとp少なくともメモリ消費に関しては、より効率的になります。別の可能性は 'array_column()'を使用しています - もしそれが 'ArrayAccess'オブジェクトで動作するならば、あなたのユースケースのためによりよく最適化されるかもしれません。しかし、オーバヘッドのほとんどはORM自体から来ているので、あなたはここでボトルネックを目標にしていないので、可能な利益は無視できるものになります。 – Narf