yii模型save()没有运行

时间:2014-12-09 18:00:47

标签: php yii

我目前正在尝试上传图片并将文件名保存在数据库中。该表称为图像,它只有3个变量,ID图像和listing_ID。当我尝试保存时,我没有收到错误,图像被重命名和上传,但我没有在桌面上输入。我想这可能是因为我保存图像的php文件位于我的根目录(受保护文件夹之外),但我可能错了。任何人都可以对此有所了解或如何解决这个问题?

本地网址是:mylocalmachine / index.php / listings / upload_images / 1 listing_ID:1;

php code:http://pastie.org/9770341

该文件只是重命名图像以进行保存,并且应该在图像表中连续输入。

<?php
$output_dir = "uploads/";

if(isset($_FILES["myfile"]))
{
$ret = array();

$error =$_FILES["myfile"]["error"];
{

    if(!is_array($_FILES["myfile"]['name'])) //single file
    {
        $RandomNum   = time();

        $ImageName      = str_replace(' ','-',strtolower($_FILES['myfile']['name']));
        $ImageType      = $_FILES['myfile']['type']; //"image/png", image/jpeg etc.

        $ImageExt = substr($ImageName, strrpos($ImageName, '.'));
        $ImageExt       = str_replace('.','',$ImageExt);
        $ImageName      = preg_replace("/\.[^.\s]{3,4}$/", "", $ImageName);
        $NewImageName = $ImageName.'-'.$RandomNum.'.'.$ImageExt;

        move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir. $NewImageName);
        //echo "<br> Error: ".$_FILES["myfile"]["error"];

        $ret[$fileName]= $output_dir.$NewImageName;

        $image_entry = new Images;
        $image_entry->image = $NewImageName;
        $image_entry->listing_ID = $listing_ID;
        $image_entry->save();

    }
    else
    {
        $fileCount = count($_FILES["myfile"]['name']);
        for($i=0; $i < $fileCount; $i++)
        {
            $RandomNum   = time();

            $ImageName      = str_replace(' ','-',strtolower($_FILES['myfile']['name'][$i]));
            $ImageType      = $_FILES['myfile']['type'][$i]; //"image/png", image/jpeg etc.

            $ImageExt = substr($ImageName, strrpos($ImageName, '.'));
            $ImageExt       = str_replace('.','',$ImageExt);
            $ImageName      = preg_replace("/\.[^.\s]{3,4}$/", "", $ImageName);
            $NewImageName = $ImageName.'-'.$RandomNum.'.'.$ImageExt;

            $ret[$NewImageName]= $output_dir.$NewImageName;
            move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$NewImageName );

            $url = $_SERVER['REQUEST_URI'];
            $exploded_url = explode('/',$url);
            $listing_ID = end($exploded_url);

            $image_entry = new Images;
            $image_entry->image = $NewImageName;
            $image_entry->listing_ID = $listing_ID;
            $image_entry->save();
        }
    }
}
echo json_encode($ret);

}

?>

3 个答案:

答案 0 :(得分:1)

如果您调用save(),它将运行验证并在失败时返回false。 你必须相应地检查一个行为的返回值。以下代码将在验证失败的情况下打印所有验证错误:

if (!$image_entry->save()) {
    print_r($image_entry->getErrors();)
}

答案 1 :(得分:1)

可能你的模型没有通过验证

使用

$image_entry->validate();

检查验证结果 (返回boolean是否验证成功且没有任何错误。)

使用

$image_entry->getErrors()

获取验证错误数组

或使用

$image_entry->save(false);

保存而不进行验证

答案 2 :(得分:0)

$ fileName未设置。它应该是$ ret ['fileName'] = $ output_dir。$ NewImageName;