Laravel 5.1: handle joins with same column names

前端 未结 4 1955
傲寒
傲寒 2021-02-04 00:00

I\'m trying to fetch following things from the database:

  • user name
  • user avatar_name
  • user avatar_filetype
  • complete conversation_messages<
4条回答
  •  忘掉有多难
    2021-02-04 00:39

    I had the following problem, simplified example:

    $result = Donation::join('user', 'user.id', '=', 'donation.user_id')->where('user.email', 'hello@papabello.com')->first();
    

    $result is a collection of Donation models. BUT CAREFUL:

    both tables, have a 'created_at' column. Now which created_at is displayed when doing $result->created_at ? i don't know. It seems that eloquent is doing an implicit select * when doing a join, returning models Donation but with additional attributes. created_at seems random. So what I really wanted, is a return of all Donation models of the user with email hello@papabello.com

    solution is this:

    $result = Donation::select('donation.*')->join('user', 'user.id', '=', 'donation.user_id')->where('user.email', 'hello@papabello.com')->first();
    

提交回复
热议问题