将参数传递给 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)));
}

备注:

  1. 把 var $uses = array('MMSDvSchoolFromCalendar');在控制器的顶部 class,因此您不必继续加载模型。

  2. 函数前的下划线表示私有函数。使用此选项,用户无法转到 MMSDvSchoolFromCalendar/getSchoolsByLevel 页面。