Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在模型中使用另一个模型_Php_Yii_Yii Cactiverecord - Fatal编程技术网

Php 在模型中使用另一个模型

Php 在模型中使用另一个模型,php,yii,yii-cactiverecord,Php,Yii,Yii Cactiverecord,这将是一个一般性问题,具体而言(关于Yii) 我只想知道这是一种好的做法,还是正确的做法: 在我的表单视图中,我调用的是另一个模型,而不是当前使用的模型 // @model Clients <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'myid-form', 'enableAjaxValidation'=>false, )); ?> <div class="row"> <

这将是一个一般性问题,具体而言(关于Yii)

我只想知道这是一种好的做法,还是正确的做法:

在我的表单视图中,我调用的是另一个模型,而不是当前使用的模型

// @model Clients
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'myid-form',
'enableAjaxValidation'=>false,
)); ?>

<div class="row">
  <?php echo $form->labelEx($model,'Debtor'); ?>
  <?php echo $form->dropDownList($model, 'Debtor'
        , CHtml::listData(Debtor::model()->findAll(), 'DebtorCode', 'DebtorDesc'),array('empty'=>'(Select Debtor)')); ?>
  <?php echo $form->error($model,'Debtor'); ?>
</div>
/@model客户端
如果我错了,有人能告诉我什么是正确的方法吗


TIA我认为你的问题不对。您询问的是如何调用模型中的另一个模型。但是您提供的代码在视图中使用的是另一个模型。显然,视图不是模型。
也许您的问题是“除了yii生成的代码中使用了其他模型外,我是否可以在视图中使用其他模型”。
回答您的问题:是的,您可以这样使用,如果您谈论使用模型,这没有什么问题但是您在视图中编写了一个DB代码(findAll),这不是一个好的实践。Yii是一个MVC框架,其基本主题是分离表示和数据访问。是的,你可以做到。我不会反对,但这违背了我的哲学。其次,如果您在视图中访问Db,那么您的代码就不再是“非常好的可管理代码”。这将是一个普通的代码,因为在您的视图中使用Db访问,您或其他编码人员将很难确定发生了什么以及如何修改代码(如果需要)。
您可以在控制器中编写该代码,如

$debtor=Debtor::model()->findAll();
$debtorList=CHtml::listData($debtor,'DebtorCode','DebtorCode');
$this->render('my _form',array('debtorList'=>$debtorList));
在您看来,您可以像

<?php echo $form->dropDownList($model, 'Debtor'
        , $debtorList,array('empty'=>'(Select Debtor)')); ?>