我是Yii2的新手。我有三个表项目,设施和结表project_amenity,这里是代码:无法在Yii的交界表中插入记录
项目型号:
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Project extends \yii\db\ActiveRecord
{
public function getAmenities()
{
return $this->hasMany(Amenity::className(), ['id' => 'amenity_id'])->viaTable('project_amenity', ['project_id' => 'id']);
}
public function rules()
{
return [
[['name', 'city'], 'required'],
];
}
}
美化型号:
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Amenity extends \yii\db\ActiveRecord
{
public function getProjects()
{
return $this->hasMany(Project::className(), ['id' => 'project_id'])->viaTable('project_amenity', ['amenity_id' => 'id']);
}
}
ProjectController:
<?php
namespace app\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use app\models\Project;
use app\models\Amenity;
use yii\helpers\ArrayHelper;
class ProjectController extends Controller
{
public function actionCreate()
{
$project = new Project;
$amenities = ArrayHelper::map(Amenity::find()->all(), 'id', 'name');
if ($project->load(Yii::$app->request->post()) && $project->save()) {
return $this->render(['confirm', 'id' => $project->id]);
} else {
return $this->render('create', [
'project' => $project, 'amenities' => $amenities
]);
}
}
}
这里是不完整的创建观点:
<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>
<table class="table">
<tr>
<td><?= $form->field($project, 'name'); ?></td>
</tr>
<tr>
<td ><?= $form->field($project, 'city'); ?></td>
</tr>
<tr>
<td><?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?></td>
</tr>
</table>
<?php ActiveForm::end(); ?>
ProjectAmenity个路口的模式
<?php
namespace app\models;
use yii\db\ActiveRecord;
class ProjectAmenity extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'project_amenity';
}
public function rules()
{
return [
[['project_id', 'amenity_id'], 'required']
];
}
}
?>
我'能够显示相关数据,但无法插入。请建议如何在创建视图上显示欢迎复选框,以及如何在创建视图中显示插入中的数据项目和project_amenity表。
感谢您的答复。我遵循你的指令,但错误“为foreach()提供的无效参数”。请参阅上面更新的联结型号代码。 – Alex
在为设施属性定义规则后感谢它的工作。 – Alex