Confuso entre matriz e objetos no Laravel

Estou aprendendo o Laravel e ele usa conceitos OOPS. Agora estou achando difícil entender a diferença real entre matriz e objetos. Na verdade, eu sei o que é uma matriz e um objeto.

A matriz pode conter mais de uma variável onde, como objeto, é uma entidade independente que possui seus próprios argumentos e métodos. Geralmente usamos o loop foreach para percorrê-los.

No laravel, os dados são retornados na forma de instância do modelo como objeto. Quando a resposta da consulta tem vários resultados, os dados são retornados na forma de uma matriz que contém objetos. Eu estava tentando entender a classe de coleção usada no laravel.

A referência Codebright diz

A própria classe Collection é apenas um invólucro para uma matriz de objetos, mas possui vários outros métodos interessantes para ajudá-lo a extrair itens da matriz.

Agora voltando à minha confusão. Eu estava usando métodos diferentes, comoall() efirst() métodos para buscar o resultado. Mas às vezes quando eu usei seta (->) para buscar os dados usando um loop foreach, de um objeto (contido em uma matriz), ele mostrou um erro que diz algo como se não fosse um objeto. Depois usei colchetes e os dados foram exibidos.

Eu sei que usamos[] para buscar dados de matrizes e usamos-> buscar dados de objetos. Mas ainda estou confuso sobre o Laravel. Alguém pode afirmar claramente a diferença entre eles em referência à classe Collection usada no Laravel?

Edit :: A confusão começou ao usar este código:

foreach($self_conversations as $self_conversations_fetch){
    //fetching each conversation id
    $conversation_id = Conversation::find($self_conversations_fetch->conversation_id);
    $user_id = array();

//fetching each conversation member's id
    foreach($conversation_id->conversationsMember as $conversationmembers)
        $user_id[] = $conversationmembers->user_id;

        $self_id = User::where('email', Session::get('email'))->first()->id;
        $self_id_array = array($self_id);
        $friend_id_array = array_diff($user_id, $self_id_array);

        foreach($friend_id_array as $friend_id) array_push($friend_ids, $friend_id);

    $conversations_reply_obj = ConversationReply::where('conversation_id', $self_conversations_fetch->conversation_id)->orderBy('updated_at', 'desc')->first();

    $conversations_reply[] = $conversations_reply_obj['reply'];
}

Como você pode ver, usei colchetes para buscar os dados (na última linha).

$conversations_reply[] = $conversations_reply_obj['reply'];

eu estava esperando flecha para trabalhar aqui

questionAnswers(2)

yourAnswerToTheQuestion