>PHP 프레임워크 >YII >yii2 하손 사용 방법

yii2 하손 사용 방법

(*-*)浩
(*-*)浩원래의
2019-11-07 09:57:564042검색

Yii2에는 두 가지 모델 간의 연관성을 지정하는 데 사용되는 두 가지 유형의 테이블 간 연관성이 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.