Yii2에는 두 가지 모델 간의 연관성을 지정하는 데 사용되는 두 가지 유형의 테이블 간 연관성이 있습니다.
일대다: hasMany
일대일: hasOne (권장 학습: yii tutorial)
반환 결과: 이 두 메소드의 반환 결과는 모두 yiidbActiveQuery 객체입니다
첫 번째 매개변수: 연관된 모델의 클래스 이름.
두 번째 매개변수: 배열입니다. 여기서 키는 관련 모델의 속성이고 값은 현재 모델의 속성입니다.
Association of Association
이제 고객의 모든 주문 정보를 가져옵니다
$customer = Customer::findOne(1); $orders = $customer->orders; // 通过在Customer中定义的关联方法(getOrders())来获取这个客户的所有的订单。
위의 두 줄의 코드는 다음과 같은 SQL 문을 생성합니다
SELECT * FROM customer WHERE id=1; SELECT * FROM order WHERE customer_id=1;
Association 결과 캐시
고객의 주문이 변경되면, we
$orders = $customer->orders;
에 다시 전화해서 다시 주문을 받아보면 아무런 변화가 없다는 것을 알게 될 것입니다. 그 이유는 $customer->orders가 처음 실행될 때만 데이터베이스를 쿼리하고 결과를 캐시하며 이후 쿼리에서는 sql이 실행되지 않기 때문입니다.
그럼 다시 SQL을 실행하고 싶다면 어떻게 해야 할까요?
unset($customer->orders); $customer->orders;
를 실행한 다음 데이터베이스에서 데이터를 가져올 수 있습니다.
코드 설명:
// 执行sql语句: SELECT * FROM customer WHERE id=1 $customer = Customer::findOne(1); //执行sql:SELECT * FROM order WHERE customer_id=1 $orders1 = $customer->orders; //这个不会执行sql,直接使用上面的缓存结果 $orders2 = $customer->orders; //如果中间的用户订单有变化,我们就不能从缓存中获取,要unset掉 unset($customer->orders); $orders2 = $customer->orders;
위 내용은 yii2 하손 사용 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!