Bạn có thể sử dụng cái này để tạo OR giữa 2 điều kiện ByDefault, nó là AND
$query=db_select('users','u')->fields('u',array('uid','title','created','uid'));
$query->join('flag_content','fc' , 'u.uid = fc.content_id');
$db_or = db_or();
$db_or->condition('fc.fid', '5' , '=');
$db_or->condition('fc.uid', $uid , '=');
$query->condition($db_or);
$result = $query->execute()->fetchAll();
Có thể có điều kiện AND trong OR giả sử bạn có 3 điều kiện và nếu bạn muốn nó giống như con1 AND con2 HOẶC con3 và thậm chí nhiều trường hợp khác trong trường hợp này, bạn có thể sử dụng db_and như db_or vì khi bạn đang cố gắng sử dụng db_or các điều kiện trong db_or hiện có trong trường hợp bạn muốn và giữa những điều kiện bạn có thể sử dụng db_and hơi tẻ nhạt nhưng có thể thực hiện nó theo ví dụ dưới đây
$query = db_select('work_details_table','wd');
$query->join('work_table','w','wd.request_id = w.request_id');
$query->fields('w',array('client_id'));
$query->fields('wd');
$query->condition('wd.request_id',$request_id);
if($status == 5 || $status == 6 || $status == 7){
$query->condition('wd.status',$status);
}elseif($user_type == 'writer'){
$query->condition('wd.writer_id',$user_id);
$db_or = db_or();
$db_and = db_and();
$db_and->condition('wd.status',2);
$db_and->isNull('wd.editor_id');
$db_or->condition('wd.status',4);
$db_or->condition('wd.status',1);
$db_or->condition($db_and);
$query->condition($db_or);
}else if($user_type == 'editor'){
$query->condition('wd.editor_id',$user_id);
$db_or = db_or();
$db_and = db_and();
$db_and->condition('wd.status',2);
$db_and->isNotNull('wd.editor_id');
$db_or->condition('wd.status',3);
$db_or->condition($db_and);
$query->condition($db_or);
}
//-----------------------------------------------------------------------------------------
$completed_sku = $query->execute()->fetchAll();
Điều này sẽ cho bạn biết làm thế nào phức tạp và hoặc điều kiện có thể được xử lý trong các truy vấn PDO của Drupal.
db_or()
cũng hoạt động khi chỉ có hai điều kiện cần OR trong số 5 điều kiện được AND'ed. Không cần phải sử dụng$query->where()
, cho trường hợp như vậy.