2つのテーブルがある場合、blog_categoryとblogと言うと、それぞれの "blog"は特定のカテゴリにしか属していないので、 "blog_category_id" 。それは$カテゴリの大きさに応じて、DBの呼び出しの面で非常に高価終わる可能性のように、これは思える私にデータベース呼び出しを減らすか、PHPでマージするMysqlの親子テーブル
今//Loop through categories such as
foreach($categories as $cat):
//then for each category create an array of all its posts
$posts = $cat->getPosts(); // This would be another DB call to get all posts for the cat
//do stuff with posts
endforeach;
:
は今、私のコードでは、私のような何かをするだろう。これはこれを行うにはまだ最高の解決策でしょうか?あるいは、コード内で何かを行い、最初にすべてのカテゴリを取得してから、すべてのブログを取得して、idを介して対応するカテゴリにマップすることができますか?これは理論的には2つのコールをDBにするだけですが、コール2(ブログ)の結果セットは確かにサイズが大きくなりますが、実際のDBコールは高価になるでしょうか?
私は通常、最初のオプションを選択しますが、これに近づくより良い方法があるのだろうか、それともPHPの余分な処理がパフォーマンス面でより高価になる可能性が高いのでしょうか?また、MVCの観点からは、モデルがカテゴリを返すが、そのカテゴリの対応するブログも返さなければならないと、モデルをすべてのデータを返すべきではないと私の理解から、ビューに必要ですか?
または、最初のクエリで内部結合を使用してすべてのカテゴリとブログを選択して、これを必要とする出力を作成する方が良いでしょうか?おそらく、多次元配列を使用することによって?
おかげ
こんにちは、私は結合を行う方法を知っていますが、具体的には、MVC構造体を使用してこれを行うための最良の方法が、最高のパフォーマンスを誇るものとバランスを取るべきであるというアドバイスを探していました – TommyBs
実際にこのコードに何らかの影響を与えます。 MVCは全体的な構造であり、データベース設計を指示しません。 MVCの 'M'はDBとは話していないかもしれませんが、APIなどを使っている可能性があります。テンプレートコードも含めて私の答えを更新しました。 – Treffynnon
こんにちは、返信いただきありがとうございます。私は擬似コードを使用して、私が望むものを説明するための例を単純化しました。私はそれが実際にDBの設計を指示しないことを知っていましたが、コードをどのように構造化するか、それが私のやり方に応じてパフォーマンス上の利点があるかどうか(または、これがMVCプロジェクト構造体でなければなりません)。答えをもっと記入してくれてありがとう、私はMVCを初めて使い、サンプル構造を示すチュートリアルを中心に、構造化の方法に関する詳細なチュートリアルは実際には見つけられていません。私は遊びをして質問を更新します – TommyBs