web-dev-qa-db-ja.com

Laravel 5.0ブレードテンプレートとcount()条件

コレクション(タスク)があり、完了したタスクのみをブレードテンプレート内でカウントしたいと思います。

例合計タスク= 7

完了したタスクの合計= 2

進行中のタスクの合計= 5

やってみます

{{ count($tasks->completed = 100) }}

そしてそれは動作しますが、私が試してみると

{{ count($tasks->completed < 100) }}

エラーが発生しました。

何か助けはありますか?

申し訳ありませんが、私はlaravelの初心者です。

(laravel 5.0)

[〜#〜] update [〜#〜]

私は次のようなものを示す必要があります:

完了(2)/進行中(5)。

私のコントローラーでは:

public function index()
{
    $tasks = Task::All();
    $completed = $tasks->where('completed', 100);
    //I dunno how...
    $inprogress = ...;
    return view('pages.projects', compact('projects', 'tasks', 'completed', 'inprogress'));
}  

データベースでは、タスクテーブルに「完了」(整数)列があり、これを使用してタスクのステータスを確認します(0%から100%、100%完了)。

4
natas

私はあなたがこれをするために正しい方法を使っているとは思わない。 1つの関数でカウントと比較を行っています。

ブレードでの比較

@if($tasks->completed->count() == 100)
    <p>This is shown if its 100</p>
@else
    <p>This is shown if its not 100</p>
@endif

またはこれ:

@if($tasks->completed->count() < 100)
    <p>This is shown if its smaller than 100</p>
@else
    <p>This is shown if its 100 or bigger</p>
@endif

(更新:)ブレードでのコレクションのフィルタリングとカウント:

$tasks = Task::all();
$completed = $tasks->where('completed', 100);
$inprogress = $tasks->filter(function ($task) {
    return $task['completed'] < 100; // Or $task->completed if its an object
});

return view('pages.projects', compact('projects', 'tasks', 'completed', 'inprogress'));

ブレードにカウントを表示します。

<p>{{ $completed->count() }} completed</p>
<p>{{ $inprogress->count() }} in progress</p>
13
Björn