Note that the array format of where() is designed to match columns to values instead of columns to columns, so the following would not work as expected:
['post.author_id' => 'user.id'], it would match the post.author_id column value against the string 'user.id'.
It is recommended to use the string syntax here which is more suited for a join:
'post.author_id = user.id'