Laravel 实战开发知乎:实现提交答案
打赏作者

lioonline

请问我这个图片路径为什么会错呢?URL中间会自动加多一个 questions

GET http://wuciyuan.cc/questions/images/avatars/default.jpg 404 (Not Found)
JellyBool 回复 lioonline

/images/avatar/default.png

lioonline 回复 JellyBool

正式show.blade.php 中的代码

 <div class="media-left">
                                    <a href="">
                                        <img width="36" src="{$answer->user->avatar}"
                                             alt="{$answer->user->name}">
                                    </a>
                                </div>

在浏览器中查看源码

iamge

JellyBool 回复 lioonline

就是数据库中默认的头像地址你没给对,前面加个斜杠就好

/images/avatar/default.png
lioonline 回复 JellyBool

果然如此,谢谢

laixiaojie

请问一下我提交问题后,返回的状态码是302,而不是200,导致生成数据不能成功

Route::post('questions/{question}/answer','AnswersController@store');

还有表单也是定义好了post,不知道是什么情况

Request URL:http://localhost:8000/questions/3/answer
Request Method:POST
Status Code:302 Found
Remote Address:127.0.0.1:8000

已解决,注入错误

hard88

你好,SQLSTATE[HY000]: General error: 1364 Field ‘question_id’ doesn’t have a default value (SQL: insert into answers
我的代码部分:

 public function store(Request $request,$question)
        {
            $answer=$this->answer->create([
                'question_id'=>$question,
                'user_id'=>Auth::id(),
                'body'=>$request->get('body')
            ]);
            $answer->question()->increment('answers_count');
            return back();
        }

之前dd也是有值得,却说值没有传进来。。

dd($question);
也是传过来的

hard88

更新一下问题,SQLSTATE[HY000]: General error: 1364 Field ‘question_id’ doesn’t have a default value (SQL: insert into answers (user_id, body, updated_at, created_at) values (6,

23

, 2017-03-01 15:06:25, 2017-03-01 15:06:25))

但是比如我的url为http://localhost:8000/questions/12,我dd一下,结果是"12",$question是有值得啊

JellyBool 回复 hard88

仔细看一下吧。。。相信报错信息

你确定触发的是 http://localhost:8000/questions/12

hard88 回复 JellyBool

额,已经弄了一个下午,‘question_id’的值就是存储不到数据库中。关于migration,我已经看了上一个视频,一 一对照了并且重新生成了一遍,数据库也重启了,fillable里面的值确认了,google后把config / database.php文件的连接设置’strict’=> false。我dd(request>all(),request->all(),question)可以收到$question的值,‘question_id’ => $question,一直有问题。

如果是站长,会再往哪去看,会是原因呢?已经抓狂了。。。。麻烦了

JellyBool 回复 hard88

fillable 看一下呗

hard88

站长可以贴一下show.blade.php的代码么,当我提交答案后,“x个答案”这里样式改变了,增添了a标签,同时下划线的样式也没有了,有对照视频中的样式,这种问题这两天一直出。。。

JellyBool 回复 hard88

这种你直接自己定一下 css 的样式就好了吧

hard88

没事,解决了==

hwlweb

$answer->question()->increment(‘answers_count’);

Missing argument 1 for Symfony\Component\Console\Question\Question::__construct(), called in /Users/hwl/work/phps/zhihu-app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php on line 487 and defined

改answers_count时报错了,看不出是哪里出问题了

JellyBool 回复 hwlweb

检查一下你的 命名空间有没有写对:

Symfony\Component\Console\Question\Question::__construct(),

不应该有这个的

hwlweb 回复 JellyBool

use Question時錯了,哎,該死的phpStorm自動补全,心都碎了。。。。

JellyBool 回复 hwlweb

稍微注意一下就行

Psychic_role

老师为什么Request里面这个属性默认为false啊

public function authorize() { return true; }
JellyBool 回复 Psychic_role

因为默认是要认证的…只不过我们改为true是一种比较偷懒的方法

Psychic_role 回复 JellyBool

如果不认证,会有什么后果呢?

JellyBool 回复 Psychic_role

基本没有大事…认证就是比如说:这个comment 是不是你创建的,就检测 comment 的 userid 是否等于登录进来的 userid

nanibigoo

记录下:eloquent自带延迟加载,不用with,当调用时自动加载关联模型,但是会产生n+1次查找的问题,with()是预加载只需查找两次

huyouheng

这里有一个不好的地方,不知道为啥,就是当Question模型使用了软删除的时候,在AnswersController中提交评论的时候,虽然评论成功了,但是它直接就把文章给删除了,在Question模型中禁用
// use SoftDeletes;
// protected $dates = [‘deleted_at’];
后就不会删除了,为啥子会这样啦。。。。。。。。。。。。。。。。

huyouheng

一旦questions表中有deleted_at 字段的时候,对值修改,除了updated_at字段会变外,deleted_at字段也会变,这是为啥?我用的是5.4.23版本

crisis 回复 huyouheng

laravel默认是维护这几个字段的 可以设置 $timestamp = false;

myhyperion

如果是几百个回答呢?这种with的分页还没介绍吧

liujun

AnswerController里面的store方法:我直接用传进来的$question->increment(‘answers_count’),这样严谨吗?

JellyBool 回复 liujun

稍微有一点点不严谨,用户传其他的 question id 过来就不一样了

hate

问题已经解决,自己写代码不严谨,少写了一个S

vink030212

MethodNotAllowedHttpException in RouteCollection.php line 218:
我按提交答案后出现这个错误,是什么问题?

vink030212

删除答案大概要怎么做?