나는 이런 식으로 뭔가 쓸 수 : 시도 DB 쿼리 빌더Eloquent에서 두 개의 쿼리 대신 INNER JOIN을 사용하여 관계를 쿼리 할 수 있습니까?
SELECT
post.*,
author.*
FROM post
INNER JOIN author
ON author.id = post.author_id
WHERE post.id = ?
나는 이런 식으로 뭔가 쓸 수 : 시도 DB 쿼리 빌더Eloquent에서 두 개의 쿼리 대신 INNER JOIN을 사용하여 관계를 쿼리 할 수 있습니까?
SELECT
post.*,
author.*
FROM post
INNER JOIN author
ON author.id = post.author_id
WHERE post.id = ?
를 사용
$post = Post::join(['author'])->find($postId);
$authorName = $post->author->name;
은 내부에서만 하나를 선택 생산에 참여 (2 개 번 선택) 및없이를
Post::join('author',function($join){
$join->on('author.id','=','post.author_id');
})->where('post.id','=',$postId)->select('post.*','author.*');
두 개의 열이 같은 이름을 공유하면 병합된다는 것을 알리기 만하면됩니다. 이를 피하기 위해 select 절에는 해당 열의 별칭이 포함되어야합니다. –
join
방법을 사용하여 Eloquent에서 할 수 있습니다.
$post = Post::join('author', function($join)
{
$join->on('author.id', '=', 'post.author_id');
})
->where('post.id', '=', $postId)
->select('post.*', 'author.*')
->first();
6,는 $post
의 결과가 자신의 속성이 이 경우 열이을 병합 할 것 같은 이름을 가진 결과 집합에 해당 할 대상을 져야합니다. 사용할 때 이런 일이 :
->select('post.*', 'author.*')
, 당신은 select 절에서 그 열에 별칭을 작성해야이 문제를 방지하려면 아래와 같이
->select('post.id AS post_id', 'author.id AS author_id')
그래서 관계'$ this-> belongsTo를 ('저자')'는 두 개의'Select' 쿼리를 생성합니다. 그리고 게시물과 함께 동일한 SQL 쿼리에서 작성자 정보를 얻고 싶습니다. – mikatakana