posta por favor o controller que cria o comment?

Cara, pelo que entendi você está tentando realizar um foreach em um objeto. O método findOrFail retorna pra você um objeto, talvez por isso tentando resgatar apenas um comentário deu tudo certo.

Tente usar algo como: Comment::where('project_id', $id)->get(), dessa forma ele trará um array de comentários onde você poderá realizar suas iterações.

Talvez esse possa ser o problema. Se não, manda o link do repo pra dar uma olhada.

Funcionou!!! Obrigado demais cara. Não fazia ideia dessa do findOrFail apenas puxar um objeto.. Então nesse ```('project_id', $id)->get()``` tá sendo realizada uma comparação entre project_id e o $id? Só para confirmar que estou interpretando corretamente.
O método Where você coloca uma condicional na sua query, nesse caso os registros devem ter o project_id igual ao valor da variável $id. `where('project_id', '=', $id)` O método find() ele busca de acordo com seu index informado na migration, no caso quando você faz `Comment::find($id)` você está buscando um registro onde o seu `id` seja igual ao valor da variável $id. Em resumo é isso.

Opa, acabei esquecendo, ta aqui:

    public function comment(Request $request, $id){
        $comment = new Comment;

        $user = auth()->user();

        $comment->project_id = $id;
        $comment->user_name = $user->name;
        $comment->commentary = $request->commentary;

        $comment->save();

        return redirect('/');
    }
na view que puxa os comments, precisa acertar o where da consulta pra puxar comentarios where('project_id', '=', '$id')->get() do projeto. salvo engano o findOrFail() tb puxa só o primeiro pelo id.
Valeu demais amigo!! Funcionou certinho aqui agora. Agradeço demais
kkkk isso aí.. sincronia total!! boa mlke...