1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * An object that contains sql join fragments. 19 * 20 * @since Moodle 3.1 21 * @package core 22 * @category dml 23 * @copyright 2016 The Open University 24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 */ 26 27 namespace core\dml; 28 29 defined('MOODLE_INTERNAL') || die(); 30 31 /** 32 * An object that contains sql join fragments. 33 * 34 * An example of how to use this class in a simple query, where you have got 35 * a join that is a join to the user table: 36 * 37 * $users = $DB->get_records_sql("SELECT u.* 38 * FROM {user} u 39 * {$sqljoin->joins} 40 * WHERE {$sqljoin->wheres}", $sqljoin->params); 41 * 42 * @since Moodle 3.1 43 * @package core 44 * @category dml 45 * @copyright 2016 The Open University 46 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 47 */ 48 class sql_join { 49 50 /** 51 * @var string joins. 52 */ 53 public $joins; 54 55 /** 56 * @var string wheres. 57 */ 58 public $wheres; 59 60 /** 61 * @var array params. 62 */ 63 public $params; 64 65 /** 66 * @var bool if true this join is guaranteed to never match any rows. 67 * In this case, the calling code may be able to completely 68 * skip doing the database query. 69 * @since Moodle 3.9/3.8.3/3.7.6. 70 */ 71 public $cannotmatchanyrows; 72 73 /** 74 * Create an object that contains sql join fragments. 75 * 76 * Note, even if you set $cannotmatchanyrows to true, it is 77 * important to also set the other fields because the calling 78 * code is not required to check it. For example 79 * new \core\dml\sql_join('', '1 = 2', [], true); 80 * 81 * @param string $joins The join sql fragment. 82 * @param string $wheres The where sql fragment. 83 * @param array $params Any parameter values. 84 * @param bool $cannotmatchanyrows If true, this join is guaranteed to match no rows. See comment on the field above. 85 */ 86 public function __construct($joins = '', $wheres = '', $params = array(), $cannotmatchanyrows = false) { 87 $this->joins = $joins; 88 $this->wheres = $wheres; 89 $this->params = $params; 90 $this->cannotmatchanyrows = $cannotmatchanyrows; 91 } 92 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body