【发布时间】:2015-11-05 18:34:47
【问题描述】:
我正在使用 Laravel 创建一个网络机器人,它从其他网站收集数据并将其存储在我的 MySQL 数据库中。当我想保存body 时,我使用dd($this->render($post));,这很好。然而,当我使用$post->save() 将我的帖子保存在数据库中时,它并没有完全保存我的帖子正文,并且缺少一些文本。
我的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');
}
}
【问题讨论】:
-
您的模型是否有
$fillable属性,并且其中包含 body 属性? docs -
TEXT 65,535 字节,LONGTEXT 4,294,967,295 字节 ~4GB... 对我来说似乎有所不同...。请注意,这是 byte 大小,而不是字符大小
-
在您调用
save方法之前,请您发布创建/获取模型并进行列分配的其余代码。问题可能就在那里。 -
Forreal- 发布您的代码...例如,您是否曾经将正文分配给帖子? $post->body = $body; $post->save();
-
@MikelBitson 帖子已编辑...