laravel save方法不能完全保存数据

时间:2015-11-05 18:34:47

标签: php mysql laravel

我正在使用Laravel创建一个Web bot,它从其他网站收集数据并将其存储在我的MySQL数据库中。当我想保存body时,我使用dd($this->render($post));,这很好。然而,当我使用$post->save()在db中保存我的帖子时,它没有完全保存帖子的主体,并且缺少一些文本。

我的body至少有10000个字符,我总是有这个问题。

我检查了textlongtext的正文列类型,并没有任何区别......

问题在哪里?

编辑:

这是我的索引方法:

 public function getIndex()
    {
        $temp = App\Temp::where('status' , 0)->orderBy('id' , 'desc')->first();
        $temp->status = 1;
        $temp->save();
        $post = new App\Post;
        $post->title = $temp->title;
        $post->link = $temp->link;
        $post->desc = $temp->desc;
        $post->cat_id = $temp->cat_id;
        $post->url_id = $temp->url_id;
        $post->body = $this->render($post);
        $post->save();
        echo "+";
    }

当我在保存之前使用dd($this->render($post));时,它会显示完整的文字而没有任何问题......但是在我获取正文后保存时,帖子的末尾会丢失一些字符...

这是render()方法......

public function render($post)
    {
        echo "Start : ";
        $this->ftp->createFolder('/'.$post->url_id.'/'.$post->id."/");
        echo "Dir - ";
        $mixed_body = $this->desc($post->title);
        echo "Mix - ";
        $body ="";
        $body = $body . '<h3><a href='.$this->postUrl.'>'.$this->postTitle.'</a></h3>';
        echo "Title - ";

        while(strlen($mixed_body) > 100)
        {
            $body = $body . $this->randImage($post);
            $body = $body . $this->randTitle();

            //insert a random paragraph
            $number = rand(100 , strlen($mixed_body));//temporary
            $paragraph = substr($mixed_body , 0 , $number);
            $mixed_body = substr($mixed_body , $number , strlen($mixed_body)-$number);

            $body = $body . '<p>' . $paragraph . '</p>';
            echo "P|";
        }
        echo "\nDone : ".strlen($body);
        return $body;
    }

render()中的其他方法会向$body添加一些文字,但这些方法并不重要。

和我的模特:

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model {

    public function tags()
    {
        return $this->hasMany('App\Tag');
    }

}

1 个答案:

答案 0 :(得分:0)

我发现我的问题原因...... 有时候我的身体里有一个像 这样的角色,laravel不会在它之后保存角色...... 我发现用这行删除 字符......

$ post-&gt; body = mb_convert_encoding($ this-&gt; render($ post),'UTF-8','UTF-8');

感谢所有人帮助我,我头痛得很厉害,想要休息......

再次感谢所有人,晚安/上午/下午(根据您的时区):)