【问题标题】:Foreign keys and uploading a photo in yii 1.1yii 1.1 中的外键和上传照片
【发布时间】:2015-12-09 20:47:51
【问题描述】:

我分别完成了这两项任务,但现在我无法在一个地方同时使用这两项任务。

问题陈述:

我有一个表名Business_items 具有表businessitems 的外键。在模型类中,这里是关系函数。

 public function relations()
        {
            // NOTE: you may need to adjust the relation name and the related
            // class name for the relations automatically generated below.
            return array(
                'business' => array(self::BELONGS_TO, 'Business', 'business_id'),
                'items' => array(self::BELONGS_TO, 'Items', 'items_id'),
                'itemReviews' => array(self::HAS_MANY, 'ItemReview', 'business_items_id'),
            );
        }

好的,在创建业务页面中,我有两个字段,business name, items name 和第三个字段 upload image。这两个字段都是可搜索的下拉菜单。我在外键的帮助下获取企业名称和项目名称。所以我可以看到我的business_items 中的值,这些值曾经是键。我通过更改此代码来做到这一点。

    public function actionCreate()
    {
            $model=new PackageItems;

            // Uncomment the following line if AJAX validation is needed
            // $this->performAjaxValidation($model);

            if(isset($_POST['PackageItems']))
            {
   $temp=$model->items_id=$_POST['PackageItems']['items_id']; //items_id is a multiple list field

                         foreach($temp as $t)
                          {
                             $model->unsetAttributes();
                             $model->setIsNewRecord(true);
                               $model->package_id=$_POST['PackageItems']['package_id']; //package_id is a repeated field

                             $model->items_id=$t;

                         $model->insert();

                        }
                if($model->save())
                    $this->redirect(array('admin','id'=>$model->id));
            }

            $this->render('create',array(
            'model'=>$model,
            ));
        } 

所以我想要我实际完成的是 id----物品----包装 1个--------蛋糕-----买一送一 2-----糕点-----买一送一

第二部分: 我知道如何在 yii 中上传图片,我点击了这个链接,它工作了http://www.yiiframework.com/wiki/349/how-to-upload-image-photo-and-path-entry-in-database-with-update-functionality/ 分开现在的问题是我想要这样的东西

 id----items----package-----------------------image
    1------cake-----buy one get one free------1.jpg
    2----- pastry-----buy one get one free------1.jpg

但问题是

public function actionCreate()
    {
        $model=new Banner;  // this is my model related to table
        if(isset($_POST['Banner']))
        {
            $rnd = rand(0,9999);  // generate random number between 0-9999
            $model->attributes=$_POST['Banner'];

            $uploadedFile=CUploadedFile::getInstance($model,'image');
            $fileName = "{$rnd}-{$uploadedFile}";  // random number + file name
            $model->image = $fileName;

            if($model->save())
            {
                $uploadedFile->saveAs(Yii::app()->basePath.'/../banner/'.$fileName);  // image will uplode to rootDirectory/banner/
                $this->redirect(array('admin'));
            }
        }
        $this->render('create',array(
            'model'=>$model,
        ));
    }

我如何同时使用这两个代码(使用外键代码和图片上传代码获取值)我想上传图片以及使用外键和我的代码从其他表中获取值。 我知道它很复杂,但我需要帮助。 提前感谢和抱歉。

【问题讨论】:

    标签: mysql yii upload foreign-keys photo


    【解决方案1】:

    我不确定我是否正确解决了您的问题,但据我了解,您希望上传一个文件并将该文件的名称插入您的一个数据库表中。如果是这种情况,解决方案可能如下: 首先,将一个新字段添加到您将在其中存储文件名的数据库表中,并将其添加到您的 ActiveRecord 类和视图中。
    然后添加您的代码以保存您的相关记录(我认为您的 foreach 循环就是为此)。
    接下来添加必要的代码以上传图像。在上传图片的代码中,您可以看到 Yii 会将文件字段视为普通文本字段,您将在其中存储上传的文件名。 最后,您应该保存模型,如果成功,则继续将文件保存在服务器中。
    希望这可以帮助。

    更新
    我会放一些代码来澄清我的答案。

    你说第一部分适合你,那我就开始吧。 您的模型 PackageItems 需要一个新字段,让它成为图像。 接下来,我假设用户填写了表单,所以我将跳过 if 和 render 部分

       $temp=$model->items_id=$_POST['PackageItems']['items_id'];
       $uploadedFile=CUploadedFile::getInstance($model,'image');//get uploaded image info
       $rnd = rand(0,9999);
       $fileName = "{$rnd}-{$uploadedFile}";  // random number + file name
       $model->image = $fileName;//store the new file name in the model 
       foreach($temp as $t){
         $model->unsetAttributes();
         $model->setIsNewRecord(true);
         $model->package_id=$_POST['PackageItems']['package_id'];
         $model->items_id=$t;
         $model->insert();
       }
       if($model->save()){
         $uploadedFile->saveAs(Yii::app()->basePath.'/../yourPath/'.$fileName);//if the record was saved in the database, then proceed to save the image in the server 
         $this->redirect(array('admin','id'=>$model->id));
       }
    

    如果您想上传多个文件,请查看此链接Yii 1.1: Uploading multiple images with CMultiFileUpload

    【讨论】:

    • 哦,让我解释一下,我想上传一张图片,以及使用外键,我想从外表中检索 items_name 和 package_name。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多