2 테이블 : users
및 articles
이 있습니다. users
테이블에 is_suspended
이라는 열이 있으며 yes
또는 no
을 허용하고 articles
테이블에는 0
또는 1
을 허용하는 is_published
이라는 열이 있습니다. 데이터베이스에서 아티클 데이터를 가져 오려면 articles.is_published
은 1
이어야하며 users.is_suspended
은 no
과 같아야합니다. 나는이 같은 쿼리 빌더를 사용하여 문서의 데이터를 가져하려고하면 지금 users.is_suspended
이 yes
동일하다는 가정 :Laravel의 Eloquent ORM 대 쿼리 작성기
// first code:
$articles = Article::join('users', 'articles.user_id', '=', 'users.user_id')
->select(['articles.*', 'users.user_name', 'users.user_email'])
->where('articles.article_id', '=', 9)
->where('articles.is_published', '=', 1)
->where('users.is_suspended', '=', 'no')
->get();
이 완벽하게 작동하며 (users.is_suspended
= yes
때문에) 아무 것도 반환하지 않습니다. 이 기사도 사용자가 경우의 데이터를 가져옵니다
[
{
article_id: 9,
user_id: 1,
article_title: "Article title here",
article_body: "Article body here",
is_published: 1,
created_at: "2015-01-17 02:26:24",
updated_at: "2015-01-17 02:26:24",
user: null
}
]
: 나는 다음의 결과를 얻을 것이다이 경우
// second code:
$articles = Article::with([
'user' => function($query) {
$query->select(['user_id', 'user_name', 'user_email'])
->where('users.is_suspended', '=', 'no');
}])
->where('articles.article_id', '=', 9)
->where('articles.is_published', '=', 1)
->get();
: 이제 같은 이런 Laravel 웅변 ORM과 기사를 가져 해보자 일시 중지되었습니다. 잘못된 것입니다. 그래서 내 질문에 첫 번째 코드처럼 행동하는 두 번째 코드를 수정하려면 어떻게됩니까?
그러나 어떻게 특정 열을 선택할 수 있으며 select ([ 'user_id', 'user_name', 'user_email'])를 어디에 넣어야합니까? $ q-> select ([ 'user_id', 'user_name', 'user_email', 'created_at']) -> 여기서 ('is_suspended', '=', 'no'); 하지만 오류가 발생합니다 : (카디널리티 위반 : 1241 피연산자는 4 개의 열을 포함해야합니다.) – Amr
'with' 메소드 콜백에 원래 위치에 넣었습니다. –
오류가 발생합니다 : explode()는 매개 변수 2가 주어진 문자열 인 것으로 예상합니다. – Amr