我正在使用Laravel创建一个Web bot,它从其他网站收集数据并将其存储在我的MySQL数据库中。当我想保存body
时,我使用dd($this->render($post));
,这很好。然而,当我使用$post->save()
在db中保存我的帖子时,它没有完全保存帖子的主体,并且缺少一些文本。
我的body
至少有10000个字符,我总是有这个问题。
我检查了text
和longtext
的正文列类型,并没有任何区别......
问题在哪里?
编辑:
这是我的索引方法:
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');
}
}
答案 0 :(得分:0)
我发现我的问题原因...... 有时候我的身体里有一个像 这样的角色,laravel不会在它之后保存角色...... 我发现用这行删除 字符......
$ post-&gt; body = mb_convert_encoding($ this-&gt; render($ post),'UTF-8','UTF-8');
感谢所有人帮助我,我头痛得很厉害,想要休息......再次感谢所有人,晚安/上午/下午(根据您的时区):)