Laravel 实战开发知乎: 用户关注之组件化开发
打赏作者

chenxin

你用的get去传送值当然不接收了,你用post肯定可以的啦!哈哈!

天山网艾克

如果没有登陆的情况下怎么样返回到登陆页面?

JellyBool 回复 天山网艾克

哪里返回到登陆页面?

lg23

明白了

lg23

群主,这两天照视频做关注,一直正常。但是今天做站内通信时,点击关注开始报错,且两个关注都一样的错,问题是我没有改动过相关内容,而且数据库也没动过.
报错内容如下:

SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2017-03-26 02:34:13' for column 'created_at' at row 1 (SQL: insert into `followers` (`created_at`, `followed_id`, `follower_id`, `updated_at`) values (2017-03-26 02:34:13, 1, 3, 2017-03-26 02:34:13))

里看着字段是对上的,无效的时间格式

问题解决了,改成中国时区就可以了,奇怪的是之前我一直没改,一样没问题的

lg23
{dd($user)}
@foreach($user->notifications as $notification)
        { $notification->type }
 @endforeach

群主, 我打印这个user,没找到这个notifications 但它的确是存在的,我想了解此相关。
在laravel 5.3 新特性中是否有此内容

JellyBool 回复 lg23

你看 laravel 5.3 的新特性的视频

lg23

群主你好,好像视频中没的提到如何取消关注的站内通知??
这里是否可以直接在 notifications 数据表中添加一个用于判断是否关注的字段。
然后在视图文件中判断该字段的状态用于区分已关注和取消关注

Psychic_role

这个用法用错了吗?
TypeError: Cannot read property ‘get’ of undefined

props:['user'],
        mounted() {
            axios.get('/api/user/followers/'+ this.user).then(response =>{
                this.followed = response.data.followed
            })
        },

没用错,生成class UserRepository的时候

namespace Repositories;
use App\User;

namespace默认的少了一个App\

JellyBool 回复 Psychic_role

axios.get 这个的问题吧…注意大小写或者 axios is的引入顺序

自己加上 App 命名空间呗

laixiaojie

想请问一下群主,有一个问题列表,每一个问题后面都有一个关注按钮,通过@foreach循环,直接在循环内加入生成好的vue组件按钮,为什么只有第一个解析呢,这是正常的吗?怎么才能让每一个都对应一个按钮呢?

JellyBool 回复 laixiaojie

逻辑上来说这是不正常的。。。

Sssshirt

希望大神继续关注功能啊。比如用户关注其他几个用户后,其他几个用户的动态(点赞、评论、发布等)能汇集在一个【所有动态】的页面里。

ncity

vue组件的mounted居然没被调用,在mounted里面console.log()也没反应,但是却显示出来关注他几个字

JellyBool 回复 ncity

你看看错误消息是啥,试试mounted里面alert()

ncity 回复 JellyBool

解决了,是5.4环境下没有vue-resource

tophgg

mounted中能输出alert()然后弹窗之后就报这2个错误
···
TypeError: Cannot read property ‘set’ of undefined(…) error @ (program):292
TypeError: Cannot read property ‘set’ of undefined(…) bootstrap.js?5e63:31Uncaught (in promise)
···
之前做关注问题的时候都ok的,但是加了关注他之后,2个按钮都会报这个错误,而且就算注释了“关注他”的相关代码,之前那个“关注问题”也用不了 一直出这个错 找不到原因。。用了this.$http.get(’/api/user/followers’)之后network中也没有出现followers的请求,

JellyBool 回复 tophgg

这种应该是很简单的错误

tophgg 回复 JellyBool

是这2个vue文件里的代码错误吗?我只要用this.$http.post和get这2个方法都会报这个错误… 要怎么调试呢

JellyBool 回复 tophgg

可能是什么单词拼错了

北漂张小白

如果我不想对followers表里的数据进行删除,想添加一个status字段来区分是否关注,这格式化toggle方法还适用吗?

北漂张小白

follow() 这个函数里面,是不是需要加上一句这个?Auth::guard('api')->user()->increment('followers_count');

 public function follow()
    {
        $userToFollow = $this->user->byId(request('user'));

        $followed = Auth::guard('api')->user()->followThisUser($userToFollow->id);

        if(count($followed['attached'])> 0 ){
            $userToFollow->increment('followers_count');
            
            Auth::guard('api')->user()->increment('followings_count');
            return response()->json(['followed' => true]);
        }

        $userToFollow->decrement('followers_count');
        return response()->json(['followed' => false]);
    }
JellyBool 回复 北漂张小白

我觉得不用也OK,你的考虑在哪?

北漂张小白 回复 JellyBool

应该是followings_count字段;
我觉得被关注的用户followers_count +1 的同时,发起关注的用户(当前登陆的用户)followings_count字段是不是也要 +1?
如果followings_count字段不 +1 ,followings_count 一直都是0;

JellyBool 回复 北漂张小白

followings_count 恩,很有道理。

这个我确实没有考虑周全

乔泓恺-Jone

生成依赖注入自动生成构造方法的快捷键是什么呢?

JellyBool 回复 乔泓恺-Jone

command n 搜 constructor 吧

乔泓恺-Jone 回复 JellyBool

成功了 谢谢

blaze0207

我眼殘沒事兒~~!

Flourishing

被关注着的followers_count要加一 关注着的followings_count也应该加一
如果取消关注 被关注着的followers_count要减一 关注着的followings_count也应该减一
代码如下:

      public function follow()
    {
        $userToFollow = $this->user->byId(request('user'));

        $followed = Auth::guard('api')->user()->followThisUser($userToFollow->id);

        if(count($followed['attached']) > 0){
            $userToFollow->increment('followers_count');

            Auth::guard('api')->user()->increment('followings_count');
            return response()->json(['followed' => true]);
        }
        $userToFollow->decrement('followers_count');
        Auth::guard('api')->user()->decrement('followings_count');
        return response()->json(['followed' => false]);
    }