AR operations in the CI framework, ciar
Part of the code in the Model layer
<span> 1</span> <span>/*</span><span>*
</span><span> 2</span> <span> * CI 中的 AR 操作
</span><span> 3</span> <span> * @author zhaoyingnan
</span><span> 4</span> <span> *</span><span>*/</span>
<span> 5</span> <span>public</span> <span>function</span><span> mAR()
</span><span> 6</span> <span> {
</span><span> 7</span> <span>/*</span><span>************** 查询 ************</span><span>*/</span>
<span> 8</span> <span>//</span><span>select * from mp4ba limit 21,10;
</span><span> 9</span> <span> //$objResult = $this->db->get('mp4ba', 10, 21);
</span><span>10</span> <span> //echo $this->db->last_query();die;
</span><span>11</span>
<span>12</span>
<span>13</span> <span> //select * from mp4ba where id =32 limit 21,10;
</span><span>14</span> <span> //select * from mp4ba where id =32 and name = '刺客聂隐娘'limit 21,10;
</span><span>15</span> <span> //$objResult = $this->db->get_where('mp4ba', array('id'=>32), 10, 21);
</span><span>16</span> <span> //echo $this->db->last_query();die;
</span><span>17</span> <span> //$objResult = $this->db->get_where('mp4ba', array('id'=>32,'name'=>'刺客聂隐娘'), 10, 21);
</span><span>18</span> <span> //echo $this->db->last_query();die;
</span><span>19</span>
<span>20</span>
<span>21</span> <span> //select id,name,url from mp4ba where id =32;
</span><span>22</span> <span> //$objResult = $this->db->select('id,name,url')->get_where('mp4ba', array('id'=>32));
</span><span>23</span> <span> //echo $this->db->last_query();die;
</span><span>24</span>
<span>25</span> <span> //select id,name,url from mp4ba where id =32 or id=39;
</span><span>26</span> <span> //$objResult = $this->db->select('id,name,url')->where(array('id'=>32))->or_where(array('id'=>39))->get('mp4ba');
</span><span>27</span> <span> //echo $this->db->last_query();die;
</span><span>28</span>
<span>29</span>
<span>30</span> <span> //select id,name,url from mp4ba where id in(33,44,55);
</span><span>31</span> <span> //select id,name,url from mp4ba where id in(33,44,55) or sort_id in (3,4);
</span><span>32</span> <span> //select id,name,url from mp4ba where id not in(33,44,55);
</span><span>33</span> <span> //$objResult = $this->db->select('id,name,url')->where_in('id', array(33,44,55))->get('mp4ba');
</span><span>34</span> <span> //$objResult = $this->db->select('id,name,url')->where_in('id', array(33,44,55))->or_where_in('sort_id', array(3,4))->get('mp4ba');
</span><span>35</span> <span> //$objResult = $this->db->select('id,name,url')->where_not_in('id', array(33,44,55))->get('mp4ba');
</span><span>36</span> <span> //echo $this->db->last_query();die;
</span><span>37</span>
<span>38</span> <span> //select id,name,url from mp4ba join user on (mp4ba.uid=user.id) order by mp4ba.dateline desc;
</span><span>39</span> <span> //$objResult = $this->db->select('id,name,url')->from('mp4ba')->join('user', 'mp4ba.uid = user.id')->order_by('mp4ba.dateline', 'desc')->get();
</span><span>40</span> <span> //echo $this->last_query();die;
</span><span>41</span>
<span>42</span>
<span>43</span> <span> //select * from mp4ba where name like '%刺客%';
</span><span>44</span> <span> //select * from mp4ba where name not like '%刺客%';
</span><span>45</span> <span> //select * from mp4ba where name like '%刺客%' or url like 'eqfdf%';
</span><span>46</span> <span> //$objResult = $this->db->like('name', '刺客')->get('mp4ba');
</span><span>47</span> <span> //$objResult = $this->db->not_like('name', '刺客')->get('mp4ba');
</span><span>48</span> <span> //$objResult = $this->db->like('name', '刺客')->or_like('url', 'eqfdf', 'after')->get('mp4ba');
</span><span>49</span> <span> //echo $this->db->last_query();die;
</span><span>50</span>
<span>51</span>
<span>52</span>
<span>53</span> <span> //select max(id) from mp4ba where name = '刺客聂隐娘';
</span><span>54</span> <span> //select min(id) from mp4ba where name = '刺客聂隐娘';
</span><span>55</span> <span> //$objResult = $this->db->select_max('id')->get_where('mp4ba', array('name'=>'刺客聂隐娘'));
</span><span>56</span> <span> //echo $this->db->last_query();die;
</span><span>57</span> <span> //$objResult = $this->db->select_min('id')->get_where('mp4ba', array('name'=>'刺客聂隐娘'));
</span><span>58</span> <span> //echo $this->db->last_query();die;
</span><span>59</span>
<span>60</span> <span> //SELECT id,sort_id,menu,name FROM mp4ba WHERE id > 3 ORDER BY `dateline` desc LIMIT 10,100
</span><span>61</span> <span> //$objResult = $this->db->select('id,sort_id,menu,name')->from('mp4ba')->where('id >', 3)->order_by('dateline desc')->limit(100,10)->get();
</span><span>62</span> <span> //echo $this->db->last_query();
</span><span>63</span> <span> //return $objResult->result();</span>
<span>64</span>
<span>65</span>
<span>66</span> <span>/*</span><span>************** 插入 ************</span><span>*/</span>
<span>67</span> <span>//</span><span>生成一条基于你所提供的数据的SQL插入字符串并执行查询。你可以向函数传递 数组 或一个 对象。下面是一个使用数组的例子:</span>
<span>68</span> <span>$arInsert</span> = <span>array</span><span>(
</span><span>69</span> 'name' => '小黄人',
<span>70</span> 'url' => 'www.test.com',
<span>71</span> 'sort_id' => 1,
<span>72</span> 'menu' => '动画片'
<span>73</span> <span> );
</span><span>74</span> <span>//</span><span>$this->db->insert('mp4ba', $arInsert);
</span><span>75</span> <span> //echo $this->db->insert_id();die;</span>
<span>76</span>
<span>77</span>
<span>78</span> <span>/*</span><span>************** 修改 ************</span><span>*/</span>
<span>79</span> <span>$arData</span> = <span>array</span><span>(
</span><span>80</span> 'name' => '小黄人,好玩嘛',
<span>81</span> 'url' => 'www.test_xiaohuangren.com',
<span>82</span> 'sort_id' => 1,
<span>83</span> 'menu' => '动画片'
<span>84</span> <span> );
</span><span>85</span> <span>//</span><span>$this->db->update('mp4ba', $arData, array('id'=>3498));
</span><span>86</span> <span> //echo $this->db->affected_rows(); #受影响的行数
</span><span>87</span> <span> //echo '<br/>';
</span><span>88</span> <span> //$objResult = $this->db->where(array('id'=>3498))->get('mp4ba');
</span><span>89</span> <span> //formatOut($objResult->result());die;</span>
<span>90</span>
<span>91</span> <span>/*</span><span>************** 删除 ************</span><span>*/</span>
<span>92</span> <span>$this</span>->db->delete('mp4ba', <span>array</span>('id'=>3498<span>));
</span><span>93</span> <span>echo</span> <span>$this</span>->db->affected_rows(); <span>#</span><span>受影响的行数</span>
<span>94</span> }
Annotations for some methods in the DB_active_rec.php class in CI (will continue to be added)

1 9a65c4f840b05a162b7d2cbee1db51a6db->where('name', $name);
98 //Generate: WHERE name = 'Joe'
99
100 //2. Custom key/value method:
101 //$this->db->where('name !=', $name);
102 //$this->db->where('id b3c8a8bdfb358e095791b264daeade39 $name, 'title' => $title, 'status' => $status);
107 //$this->db->where($array);
108 //Generate: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
109 //You can also include operators when using this method:
110 //$array = array('name !=' => $name, 'id a81e1ef2a334f07f95b50eac11f50e43 $id, 'date >' => $date);
111
112 //4. Custom string:
113 //$where = "name='Joe' AND status='boss' OR status='active'";
114 //$this->db->where($where);
115 return $this->_where(
$key,
$value, 'AND ',
$escape);
116 }
117
118 /**
119 * where
120 * @author zhaoyingnan 2015-10-14 13:31
121 * @param mix $key passes the key value of the array
122 * @param mix $value passes the value corresponding to the key of the array
123 * @return object
124 **/
125 public function or_where(
$key,
$value =
NULL,
$escape =
TRUE)
126 {
127 //Reference where
128 return $this->_where(
$key,
$value, 'OR ',
$escape);
129 }
130
131
132 /**
133 * where_in
134 * @author zhaoyingnan 2015-10-14 13:58
135 * @param string $key The column to be queried
136 * @param string $values The value range of the column
137 * @return object
138 **/
139 public function where_in(
$key =
NULL,
$values =
NULL)
140 {
141 return $this->_where_in(
$key,
$values );
142 }143
144 /**
145 * or_where_in
146 * @author zhaoyingnan 2015-10-14 13:58
147 * @param string $key The column to be queried
148 * @param string $values The value range of the column
149 * @return object
150 **/
151 public function or_where_in(
$key =
NULL,
$values =
NULL)
152 {
153 return $this->_where_in(
$key,
$values,
FALSE, 'OR '
);
154 }
155
156 /**
157 * where_not_in
158 * @author zhaoyingnan 2015-10-14 13:58
159 * @param string $key The column to be queried
160 * @param string $values The value range of the column
161 * @return object
162 **/
163 public function where_not_in(
$key =
NULL,
$values =
NULL)
164 {
165 return $this->_where_in(
$key,
$values,
TRUE);
166 }
167
168 /**
169 * or_where_not_in
170 * @author zhaoyingnan 2015-10-14 13:58
171 * @param string $key The column to be queried
172 * @param string $values The value range of the column
173 * @return object
174 **/
175 public function or_where_not_in(
$key =
NULL,
$values =
NULL)
176 {
177 return $this->_where_in(
$key,
$values,
TRUE, 'OR '
);
178 }
179
180 /**
181 * order by
182 * @author zhaoyingnan 2015-10-14 13:35
183 * @param string $orderby the column to be sorted
184 * @param string $direction asc or desc
185 * @return object
186 **/
187 public function order_by(
$orderby,
$direction = ''
)
188 {}
189
190 /**
191 * join
192 * @author zhaoyingnan 2015-10-14 14:07
193 * @param string $table table name
194 * @param string $cond condition
195 * @param string $type Specifies the type of JOIN. Options include: left, right, outer, inner, left outer, and right outer
196 * @return
197 **/
198 public function join(
$table,
$cond,
$type = ''
)
199 {}200
201 /**
202 * like
203 * @author zhaoyingnan 2015-10-14 14:28
204 * @param stringi $field wrong column
205 * @param mix $match rule
206 * @param mix $side wildcard (%) position Available options are 'before', 'after' and 'both' (this is the default)
207 * @return object
208 **/
209 public function like(
$field,
$match = '',
$side = 'both'
)
210 {
211 return $this->_like(
$field,
$match, 'AND ',
$side);
212 }
213
214 /**
215 * not_like
216 * @author zhaoyingnan 2015-10-14 14:28
217 * @param stringi $field wrong column
218 * @param mix $match rule
219 * @param mix $side wildcard (%) position Available options are 'before', 'after' and 'both' (this is the default)
220 * @return object
221 **/
222 public function not_like(
$field,
$match = '',
$side = 'both'
)
223 {
224 return $this->_like(
$field,
$match, 'AND ',
$side, 'NOT'
);
225 }
226
227 /**
228 * or_like
229 * @author zhaoyingnan 2015-10-14 14:28
230 * @param stringi $field wrong column
231 * @param mix $match rule
232 * @param mix $side wildcard (%) position Available options are 'before', 'after' and 'both' (this is the default)
233 * @return object
234 **/
235 public function or_like(
$field,
$match = '',
$side = 'both'
)
236 {
237 return $this->_like(
$field,
$match, 'OR ',
$side);
238 }
239
240 /**
241 * or_not_like
242 * @author zhaoyingnan 2015-10-14 14:28
243 * @param stringi $field wrong column
244 * @param mix $match rule
245 * @param mix $side wildcard (%) position Available options are 'before', 'after' and 'both' (this is the default)
246 * @return object
247 **/
248 public function or_not_like(
$field,
$match = '',
$side = 'both'
)
249 {
250 return $this->_like(
$field,
$match, 'OR ',
$side, 'NOT'
);
251 }
252
253 /**
254 * insert single insert
255 * @author zhaoyingnan 2015-10-14 14:52
256 * @param string $table table name
257 * @param array $set associative array
258 * @return object
259 **/
260 function insert(
$table = '',
$set =
NULL)
261 {}262
263 /**
264 * insert batch entry and exit
265 * @author zhaoyingnan 2015-10-14 14:52
266 * @param string $table table name
267 * @param array $set associative array
268 * @return object
269 **/
270 public function insert_batch(
$table = '',
$set =
NULL)
271 {}
272
273 /**
274 * update
275 * @author zhaoyingnan 2015-10-14 15:02
276 * @param string $table table name
277 * @param array $set associative array to modify the content
278 * @param mixed $where where condition
279 * @return object
280 **/
281 public function update(
$table = '',
$set =
NULL,
$where =
NULL,
$limit =
NULL)
282 {}
283
284 /**
285 * delete
286 * @author zhaoyingnan 2015-10-14 15:12
287 * @param mix $table table name
288 * @param mixed $where where condition
289 * @return object
290 **/
291 public function delete(
$table = '',
$where = '',
$limit =
NULL,
$reset_data =
TRUE)
292 {
293 //The first parameter is the table name, and the second parameter is the where clause. You can omit the second argument and use the where() or or_where() function instead:
294 //$this->db->where('id', $id);
295 //$this->db->delete('mytable');
296
297
298 //If you want to delete data from more than one table, you can pass an array containing multiple table names to the delete() function.
299 //$tables = array('table1', 'table2', 'table3');
300 //$this->db->where('id', '5');
301 //$this->db->delete($tables);
302
303
304 //If you want to delete all the data in the table, you can use the truncate() function, or the empty_table() function.
305 }
306
307 /**
308 * limit
309 * @author zhaoyingnan 2015-10-14 14:34
310 * @param int $value
311 * @param int $offset
312 * @return object
313 **/
314 public function limit(
$value,
$offset = ''
)
315 {}
316
317
318
319 /**
320 * Where
321 *
322 * Called by where() or or_where()
323 *
324 * @param mixed
325 * @param mixed
326 * @param string
327 * @return object
328 **/
329 protected function _where(
$key,
$value =
NULL,
$type = 'AND ',
$escape =
NULL)
330 {}
331
332 /**
333 * Like
334 *
335 * Called by like() or orlike()
336 *
337 * @param mixed
338 * @param mixed
339 * @param string
340 * @return object
341 **/
342 protected function _like(
$field,
$match = '',
$type = 'AND ',
$side = 'both',
$not = ''
)
343 {
344 if ( !
is_array(
$field))
345 {
346 $field =
array(
$field =>
$match);
347 }
348
349 foreach (
$field as $k =>
$v)
350 {
351 $k =
$this->_protect_identifiers(
$k);
352
353 $prefix = (
count(
$this->ar_like) == 0) ? '' :
$type;
354
355 $v =
$this->escape_like_str(
$v);
356
357 if (
$side == 'none'
)
358 {
359 $like_statement =
$prefix."
$k $not LIKE '{
$v}'"
;
360 }
361 elseif (
$side == 'before'
)
362 {
363 $like_statement =
$prefix."
$k $not LIKE '%{
$v}'"
;
364 }
365 elseif (
$side == 'after'
)
366 {
367 $like_statement =
$prefix."
$k $not LIKE '{
$v}%'"
;
368 }
369 else
370 {
371 $like_statement =
$prefix."
$k $not LIKE '%{
$v}%'"
;
372 }373
374 // some platforms require an escape sequence definition for LIKE wildcards
375 if (
$this->_like_escape_str != ''
)
376 {
377 $like_statement =
$like_statement.
sprintf(
$this->_like_escape_str,
$this->
_like_escape_chr);
378 }
379
380 $this->ar_like[] =
$like_statement;
381 if (
$this->ar_caching ===
TRUE)
382 {
383 $this->ar_cache_like[] =
$like_statement;
384 $this->ar_cache_exists[] = 'like'
;
385 }
386
387 }
388 return $this;
389 }
390
391 }
View Code
http://www.bkjia.com/PHPjc/1060219.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1060219.htmlTechArticleCI 框架中 AR 操作,ciar Model 层中的部分代码 1 /* * 2 * CI 中的 AR 操作 3 * @author zhaoyingnan 4 * */ 5 public function mAR() 6 { 7 /* ************** 查询 *****...