私は今フォーラムをやっています。Laravel - 美的コード、コントローラのデータベースクエリ?
私はコントローラにコードを書きましたが、これを行うには良い方法です(これは純粋なコードです、つまり、私のコードは固いものです)。私は思っていた、多分DBへの私の質問は、モデルにする必要がありますか?これに具体的な方法をするか、これがここにあるのでしょうか?
私はよく分かりませんが、このデータベースクエリはforeach内にある可能性がありますか?フォーラムトピック、どのように多くの記事、どのように多くの答えとの最後のポスト:私がテーブルに持っているしたいのメイン・サイトで
ここでは、コードです:
class ForumController extends Controller
{
public function mainSite()
{
$mainData = [];
$topics = Topic::all();
$lastPost = [];
foreach ($topics as $topic) {
$allPosts = Posts::where('topic_id', $topic->id)->count();
$allComments = Comments::where('topic_id', $topic->id)->count();
$post = Posts::select('added_at', 'user_id', 'subject')->where('topic_id', $topic->id)->orderBy('added_at', 'DESC')->first();
$user = ForumUsers::select('name')->where('id', $post['user_id'])->first();
$lastPost[$topic->name]=[$post['added_at'], $post['subject'], $user['name']];
$mainData[] = ['topic' => $topic->name, 'posts' => $allPosts, 'comments' => $allComments];
}
return View('forum', ['mainData' => $mainData, 'lastPost' => $lastPost]);
}
}
そして、ここでは私のビューです:
<table>
<tr>
<th>Forum</th>
<th>How many posts</th>
<th>How many answers</th>
<th>Last post</th>
</tr>
@foreach($mainData as $topic)
<tr>
<td>
<a href="{{$topic['topic']}}">{{$topic['topic']}}</a>
</td>
<td>
{{$topic['posts']}}
</td>
<td>
{{$topic['comments']}}
</td>
<td>
@foreach($lastPost[$topic['topic']] as $post)
{{$post}}
@endforeach
</td>
</tr>
@endforeach
</table>
私は初心者です。良いコードを作成する方法や、プログラミングに良い習慣を持たせる方法を教えてください。すべての回答ありがとう!