Laravel 5它没有保存到数据库,但没有错误?

时间:2017-11-11 19:06:35

标签: php laravel laravel-5 laravel-5.5 laravel-validation

我正在使用laravel 5.5并尝试将我的博客帖子的评论保存到数据库中。当我尝试这个时,它没有保存到数据库而没有给出任何错误?

(我添加了一条新评论,点击发送,重定向我同一页面。但不保存对数据库的评论..)

控制器

a,d,g,j
b,e,h,k
c,f,i,l

<div class="row">
<div data-ng-repeat="report in reports | orderBy:['description']" >
      <div class="col-xs-3">  {{report.description}}</div>
</div>
...

2 个答案:

答案 0 :(得分:0)

如果您没有保存评论并且您被重定向到同一页面,我认为您没有填写import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.Collections; public class Human implements Comparable<Human>{ static Random rand=new Random(); public int age; public String name; public static List<String> names=Arrays.asList("hugo","tor","tomas"); public Human(int age, String name) { this.age=age; this.name=name; } public Human() { this.age=rand.nextInt(101); this.name=names.get(rand.nextInt(3)); } public String getName() { return this.name; } public int getAge() { return this.age; } public String toString() { return "\n namnet är:"+" "+this.name+" "+"åldern är:"+" "+this.age; } public int compareTo(Human o) { return this.age - o.age; } } import java.util.concurrent.ThreadLocalRandom; public class Fysiker extends Human { int startyear; public Fysiker(int age,String name,int startyear) { if (startyear>=1932 && startyear<=2015){ this.startyear=startyear; this.age=age; this.name=name;} else{ System.out.println("nej"); } if (age>=15 && age<=100){ this.age=age; this.name=name; this.startyear=startyear;} else{ System.out.println("nej");} } public Fysiker() { this.startyear = 1932 + rand.nextInt(84); this.age = ThreadLocalRandom.current().nextInt(2015-this.startyear+15, 101); this.name = names.get(rand.nextInt(3)); } public String getYear() { return String.format("F %02d", this.startyear % 100); } public String toString() { return super.toString() + " " + "startåret är:" + " " + String.format("F %02d", this.startyear % 100); } public int compareTo(Human o) { if(this.age==o.age && this instanceof Fysiker && o instanceof Fysiker) { return this.startyear-((Fysiker)o).startyear;} return super.compareTo(o);} } name字段这就是验证的工作原理 - 如果验证失败,您将被重定向到之前的URL,因此请确保您显示验证错误以查看正在进行的操作。

修改

还有一件事 - 而不是email你应该使用comment并在最后移动关联帖子而不是:

->save

你应该使用:

->save()

并且使用事务将这些保存到数据库中可能是合理的。

当您使用$comment->posts()->associate($post); $comment->save; 时,您实际访问了模型的属性,并且没有运行模型保存。

答案 1 :(得分:0)

Laravel Eloquent提供了方便的方法来向关系中添加新模型,当您使用它时,它的save()方法应如下所示:

$comment = new App\Comment([
'name' => $request->name,
'email' => $request->email,
'comment' => $request->comment,
'approved' => true
]);

$post = App\Post::find($post_id);
$post->comments()->save($comment);

或者正确的方法是使用create()方法,该方法接受属性数组,创建模型并将其插入数据库。例如:

$post = App\Post::find($post_id);

$comment = $post->comments()->create([
'name' => $request->name,
'email' => $request->email,
'comment' => $request->comment,
'approved' => true
]);