Laravel Eloquent で JOIN したテーブルの同名カラムを取得する方法
Laravel Eloquent で JOIN
を使用する際、異なるテーブルに同じカラム名がある場合、そのまま取得すると競合が発生します。この問題を回避するために、SELECT
文でカラムに別名(エイリアス)を指定します。
サンプル
users
テーブルと posts
テーブルを JOIN
し、それぞれの id
カラムを取得する場合のコード例です。
use App\Models\User;
$users = User::join('posts', 'users.id', '=', 'posts.user_id')
->select('users.id as user_id', 'posts.id as post_id')
->get();
foreach ($users as $user) {
echo $user->user_id; // usersテーブルのid
echo $user->post_id; // postsテーブルのid
}