[英]Replace CodeIgniter Query builder
我正在嘗試在codeigniter中實現查詢生成器的自己的實現。 基本上,我想添加一些功能以及所有提供的功能。 就像是 :
$this-db->from('myTable')
->where('id', 1)
->custom_where('name', 'customsValues')
->get()
這里的值是irrelevent。 我已經建立了一個擴展當前CI_DB_query_builder
的類,但是我不知道在哪里設置我的類以用作主要查詢構建器。 我試圖在Google上查找類似的問題,但找不到任何東西。
任何幫助,將不勝感激。
我找到了我問題的答案。 但是,任何其他好的答案都值得歡迎,因為我的不是最漂亮的。
首先,讓我引導您完成我嘗試做的事情。
我想使用Tightenco的collect庫來使用collection而不是array。 這樣,我可以使用更直觀的鏈數組功能:
$this->db->from('...')->results()->map(function($items) { ... })->toArray();
然后,我想擁有自己的功能,例如where_if
。
我開始制作自己的查詢構建器類,該類從CI_DB_query_builder
擴展。 我有一個例子如下:
<?php
require BASEPATH . 'database/DB_query_builder.php';
class CustomQueryBuilder extends CI_DB_query_builder {
public function where_if($where, $value, $condition) : CustomQueryBuilder {
if($condition) {
$this->where($where, $value);
}
return $this;
}
public function results() : \Tightenco\Collect\Support\Collection {
return \Tightenco\Collect\Support\Collection::make($this->get()->result_array());
}
}
要將此類鏈接為主Querybuilder,我必須在文件system/database/DB.php
。
我在第171行中更改了require_once
的路徑:
require_once(APPPATH.'libraries/QueryBuilder/CustomQueryBuilder.php');
我還更改了182行的別名類
class CI_DB extends CustomQueryBuilder { }
請注意,這是在codeigniter v3.0.6上的,您的行號可能有所不同。
現在,我需要導入一些函數,因此PHPStorm上的自動完成功能仍將指向我的自定義querybuilder,因為一旦使用了from
的函數,它將返回CI_DB_query_builder
對象。
這是我最常使用的功能的導入方式。
/**
* Nothing changed here, for autocompletion only
* @param mixed $from
* @return $this|CI_DB_query_builder
*/
public function from($from) {
parent::from($from);
return $this;
}
我真的希望這對嘗試相同操作的人有所幫助。 如果您對此項目有任何反饋,請告訴我!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.