Flourishing

5412 经验值

企业级项目 一般来说不会轻易升级啊

求一个laravel5.6以下版本的,最佳实践方案啊

这个主意不错,可是实践起来估计有点难吧?国内有类似这样功能设计的网站没?

再修复一个bug 自己不能给自己发私信 不然 会出现问题 应该在questions/show.blade.php视图中加入判断 代码如下:
         @if(Auth::check() && user()->id != $question->user_id)
                        <send-message user="{ $question->user_id }" ></send-message>
          @elseif(Auth::check() && user()->id == $question->user_id )
           @else
                  <a href="{url('user/login')}" class="btn btn-default">发送私信</a>
          @endif
这里对应的每个答案下面的评论要是新增评论了 answer表的comments_count 字段就要执行加一操作 如果有删除评论的话就要执行减一操作 这里没有做删除评论功能 
对于question表的 comments_count 字段也是一样
在 store方法中 加入以下代码  得意于前面的 repository模式 这里代码做到了很好的共用
$model = $this->getModelNameFromType(request('type'));

        if($model === 'App\Question')
        {
            $question  = $this->questionRepository->byId(request('model'));
            $question->increment('comments_count');
            $question->save();
        }else{
            $answer = $this->AnswerRepository->byId(request('model'));
            $answer->increment('comments_count');
            $answer->save();
        }
如果Vuejs是2.0以上 不再支持直接对 props:里面的数据直接操作 我们可以建立副本 再来操作
props:['answer','count'],

        data() {
            return {
                voted :false ,
                voted_count: this.count
            }
        },
        computed: {
            text() {
                return this.voted_count
            }
        },
        methods:{
            vote() {
                axios.post('/api/answer/vote',{'answer':this.answer}).then(response => {
                    this.voted = response.data.voted
                    response.data.voted ? this.voted_count ++ : this.voted_count --
                })
            }
        }
laravel 版本 Laravel Framework 5.7.5
Vue.js 版本  "vue": "^2.5.7"
node 版本  v8.12.0
npm 版本 :6.4.1
线上环境 运行 没有任何 问题  注意 有两点改变  laravel 不再使用gulp 编辑前端资源文件了 执行 npm run dev  或者 npm run production 编译
发送 请求 要用 axios 来写 例如    axios.post('/api/question/follow',{'question':this.question,'user':this.user}).then(response => {
                    this.followed = response.data.followed
                })
基本 注意以上 两点 变化 不会出什么问题了

弄不好gulp 或者 npm install 或者 mix的同学 建议直接在app.blade.php文件头部引入以下文件 前提是 你讲select2的css还有js文件放入到了 public目录中 效果完全OK的

<link rel="stylesheet" href="/css/select2.min.css">
<script src="/js/select2.min.js"></script>

Jelly 看见了 回复下呗 forceCreate() 方法和 create() 方法 有啥区别?