将参数传递给 model/table 函数
Passing parameters into a model/table function
我正在尝试传递一个名为 schoolYear 的值,现在可以说是 2019 年或用户真正选择的任何值。一旦用户选择提交并执行 if post 请求,然后通过屏幕 2 进入编辑控制器,下面就会执行。在屏幕 2 上,我有一个编辑功能,其中传递了 schoolYear 和一个 echo returning 2019 我选择的正确值。伟大的!现在我正在努力将那个特定参数传递给 table 函数,以便它可以如图所示使用。有人能给我指出正确的方向吗,谢谢
现在我没有收到任何错误消息,但如果我查看正在传递的 sql,它会在正在执行的 sql 中显示 FiscalYear = 0,这意味着 $schoolyear 未被执行从我的控制器设置 hmmmmmm
return $this->redirect([
'controller' => 'MassUpdateCalender',
'action' => 'edit',
$schoolYear,
$allElementary,
]);
public function edit($schoolYear)
{
$InformationCalenderTable = $this->loadModel('MMSDvSchoolFromCalendar');
echo $schoolYear;
$elementarySchools = $InformationCalenderTable->getSchoolsByLevel('0%', $schoolYear);
public function getSchoolsByLevel($schoolYear, string $code = '0', string $isSummerSchool = '0')
{
$query = $this->find()
->where([
'FiscalYear' => $schoolYear,
'DistrictCode' => 'MA',
'summerSchool' => $isSummerSchool,
'SchoolCode like' => $code,
]);
return $query->toArray();
}
结果将 return 符合条件的所有学校的列表。
据我了解,您正在尝试根据入学年份获取学校。为此,请执行以下操作:
function edit($schoolYear) {
$this->loadModel('MMSDvSchoolFromCalendar');
$elementarySchools = $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('MMSDvSchoolFromCalendar.FiscalYear' => $schoolYear)));
}
但是,如果您尝试在 getSchoolsByLevel 函数中执行查询,请执行以下操作:
function edit($schoolYear) {
$this->loadModel('MMSDvSchoolFromCalendar');
$code = $isSummerSchool = 0;
$elementarySchools = $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('FiscalYear' => $schoolYear, 'DistrictCode' => 'MA', 'summerSchool' => $isSummerSchool, 'SchoolCode LIKE' => $code)));
}
如果你想分解你的函数,就像你的例子一样,这样做:
function edit($schoolYear) {
$this->loadModel('MMSDvSchoolFromCalendar');
$elementarySchools = $this->_getSchoolsByLevel($schoolYear);
}
function _getSchoolsByLevel($schoolYear, string $code = '0', string $isSummerSchool = '0') {
return $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('FiscalYear' => $schoolYear, 'DistrictCode' => 'MA', 'summerSchool' => $isSummerSchool, 'SchoolCode LIKE' => $code)));
}
备注:
把 var $uses = array('MMSDvSchoolFromCalendar');在控制器的顶部 class,因此您不必继续加载模型。
函数前的下划线表示私有函数。使用此选项,用户无法转到 MMSDvSchoolFromCalendar/getSchoolsByLevel 页面。
我正在尝试传递一个名为 schoolYear 的值,现在可以说是 2019 年或用户真正选择的任何值。一旦用户选择提交并执行 if post 请求,然后通过屏幕 2 进入编辑控制器,下面就会执行。在屏幕 2 上,我有一个编辑功能,其中传递了 schoolYear 和一个 echo returning 2019 我选择的正确值。伟大的!现在我正在努力将那个特定参数传递给 table 函数,以便它可以如图所示使用。有人能给我指出正确的方向吗,谢谢
现在我没有收到任何错误消息,但如果我查看正在传递的 sql,它会在正在执行的 sql 中显示 FiscalYear = 0,这意味着 $schoolyear 未被执行从我的控制器设置 hmmmmmm
return $this->redirect([
'controller' => 'MassUpdateCalender',
'action' => 'edit',
$schoolYear,
$allElementary,
]);
public function edit($schoolYear)
{
$InformationCalenderTable = $this->loadModel('MMSDvSchoolFromCalendar');
echo $schoolYear;
$elementarySchools = $InformationCalenderTable->getSchoolsByLevel('0%', $schoolYear);
public function getSchoolsByLevel($schoolYear, string $code = '0', string $isSummerSchool = '0')
{
$query = $this->find()
->where([
'FiscalYear' => $schoolYear,
'DistrictCode' => 'MA',
'summerSchool' => $isSummerSchool,
'SchoolCode like' => $code,
]);
return $query->toArray();
}
结果将 return 符合条件的所有学校的列表。
据我了解,您正在尝试根据入学年份获取学校。为此,请执行以下操作:
function edit($schoolYear) {
$this->loadModel('MMSDvSchoolFromCalendar');
$elementarySchools = $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('MMSDvSchoolFromCalendar.FiscalYear' => $schoolYear)));
}
但是,如果您尝试在 getSchoolsByLevel 函数中执行查询,请执行以下操作:
function edit($schoolYear) {
$this->loadModel('MMSDvSchoolFromCalendar');
$code = $isSummerSchool = 0;
$elementarySchools = $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('FiscalYear' => $schoolYear, 'DistrictCode' => 'MA', 'summerSchool' => $isSummerSchool, 'SchoolCode LIKE' => $code)));
}
如果你想分解你的函数,就像你的例子一样,这样做:
function edit($schoolYear) {
$this->loadModel('MMSDvSchoolFromCalendar');
$elementarySchools = $this->_getSchoolsByLevel($schoolYear);
}
function _getSchoolsByLevel($schoolYear, string $code = '0', string $isSummerSchool = '0') {
return $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('FiscalYear' => $schoolYear, 'DistrictCode' => 'MA', 'summerSchool' => $isSummerSchool, 'SchoolCode LIKE' => $code)));
}
备注:
把 var $uses = array('MMSDvSchoolFromCalendar');在控制器的顶部 class,因此您不必继续加载模型。
函数前的下划线表示私有函数。使用此选项,用户无法转到 MMSDvSchoolFromCalendar/getSchoolsByLevel 页面。