반응형
데이터베이스를 쿼리하고 폐쇄 함수에서 필터를 만들려고하는데, 내 모델 (단순화)은 다음과 같습니다.
Products:
id,
sale_id
Sales:
id,
provider_id
Provider:
id
특정 공급자의 모든 제품을 원하므로이 쿼리를 구성했습니다.
Product::with(array
('sale'=>function($query){
$query->where('provider_id', '=', 1);
})
)->get();
문제는 결과에 다음과 같이 판매가있는 올바른 제품과 판매가 null 인 잘못된 제품이 포함된다는 것입니다.
[{
"id": 25,
"sale": null
},
{
"id": 26,
"sale": {
"id": 15,
"provider_id": 3
}
}]
판매가있는 제품 : null은 다른 공급자의 제품입니다. 메모리에서 필터링 할 수 있지만 쿼리에서 null 결과를 피할 수있는 방법이 있다고 생각합니다. 단서가 있습니까?
해결 방법
판매가 whereHas ( 'sale') 에 있는지 확인하고 특정 제공 업체에 대한 조건을 적용해야합니다.
Product::whereHas('sale', function($query) {
$query->where('provider_id', '=', 1); }
)->get();
참조 페이지 https://stackoverflow.com/questions/39563081
반응형
'MySql' 카테고리의 다른 글
MySQL 중복 외래 키 제약 (0) | 2020.11.01 |
---|---|
MySQL null이 아닌 경우 열 값을 선택하고 그렇지 않으면 다른 열 값을 사용합니다. (0) | 2020.11.01 |
MySQL DB에 접속하지 않고도 웹 사이트에서 데이터베이스 콘텐츠를 얻을 수 있습니까? (0) | 2020.11.01 |
MySQL Spring Boot Actuator MySQL 데이터베이스 상태 확인 (0) | 2020.11.01 |
MySQL PHP 애플리케이션에 MySQL 대신 Redis를 사용하는 경우 (0) | 2020.11.01 |
댓글