したがって、CodeIgniter の拡張モデル (MY_Model) に次のコードがあります。
function get($options = array(), $selects = array(), $joins = array(), $table, $object = TRUE)
{
if(!empty($options))
{
foreach($options as $option => $array)
{
foreach($array as $column => $value)
{
$this->db->{$option}($column, $value);
}
}
}
if(!empty($select))
{
foreach($selects as $select)
{
$this->db->select($select);
}
}
if(!empty($joins))
{
foreach($joins as $join => $array)
{
foreach($array as $jointable => $column)
{
$this->db->join($join, $join.'.'.$column.'='.$jointable.'.'.$column);
}
}
}
$query = $this->db->get($table);
return $query->result();
}
以下のような配列を渡すことができる場所:
$options = array(
'where' => array(
'companys.companyID' => $companyID
)
);
$select = array(
'companyID',
'companyName'
);
$join = array(
'persons' => array(
'companys' => 'companyID'
)
);
$result = $this->companyModel->get($options, $select, $join, 'companys');
print_r('<pre>');
print_r($result);
私の質問は、これが良い考えではない理由があるかということです。私は自分の MY_Model でデフォルトの CI_Model を拡張しました。その後、他のすべてのモデルはこの get を使用でき、独自の関数を引き続き使用できます。他の基本的な CRUD アクションにも同様の機能があります。
もう 1 つの方法は、モデル内の関数を分離してほとんどの作業を行い、可能な限り最小のコントローラーを最適なルートにする方法です。それが、すべてのモデルで同じコードのチャンクを書き直すことを意味するとしても?
ばかげた質問ではないことを願っています。または、MVC の核となる部分を誤解していますが、とにかく返信に感謝します。