我正在使用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>
...
答案 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
]);