Laravel 4范围不适用于确切金额

时间:2014-11-02 22:15:05

标签: php laravel laravel-4

所以我的问题是,当" getAllLikers"命中停止并给我一个"类Illuminate \ Database \ Eloquent \ Builder的对象无法转换为字符串" Laravel 4.2.11中的错误。我正在使用rtconner(https://github.com/rtconner/laravel-likeable)的Likable插件。当喜欢者的数量低于或超过限制时,它可以正常工作,但是当它是确实无法工作的时候。

我尝试了很多不同的事情来尝试解决它,但我似乎无法使其发挥作用。我也有一个朋友去看它,他没有找到解决方案。

你们有什么建议吗?请参阅以下代码:

刀片模板:

<h3 class="text-muted"><small>{{ Model::getLikers($id) }} like this.</small></h3>

型号:

public function scopeGetLikers($query, $id) {
    $info = DB::table('likeable_likes')->where('likable_type', '=', 'Model')->where('likable_id', '=', $id)->get();
    $totallikes = DB::table('likeable_like_counters')->where('likable_type', '=', 'Model')->where('likable_id', '=', $id)->sum('count');

    if($info == null) {
        return 'No one';
    }

    $person = '';
    $comma = '';
    $int = 0;
    $limit = 1;

    foreach($info as $liker) {

        if($int == 0) {
            $comma = '';
        } else {
            $comma = ', ';
        }

        if($int <= $limit) {
            $person = $person . $comma . User::getUsernameByID($liker->user_id);
        }

        $int++;

    }

    if($int > $limit) {
        return $person . ' and <a href="" id="likes" tabindex="0" role="button" data-toggle="popover" data-trigger="focus" data-content="'. Model::getAllLikers($id) . '">' . ($totallikes - $limit - 1) . ' others </a> ';
    }

    return $person;
}

public function scopeGetAllLikers($query, $id) {
    $info = DB::table('likeable_likes')->where('likable_type', '=', 'Model')->where('likable_id', '=', $id)->get();

    if($info == null) {
        return '9999999';
    }

    $person = '';
    $comma = '';
    $int = 0;
    $limit = 2;

    foreach($info as $liker) {

        if($int = $limit) {
            $comma = '';
        } else {
            $comma = ', ';
        }

        if($int > $limit) {
            $person = $person . $comma . User::getUsernameByID($liker->user_id);
        }

        $int++;

    }

    return $person;
}

1 个答案:

答案 0 :(得分:0)

我自己修好了! :)

所以这是解决方案:

  • 删除了范围&#34; GetAllLikers&#34;因为这是一切都出错的地方。
  • 重写了#34; GetLikers&#34;范围,见下面的代码。

    public function scopeGetLikers($query, $id) {
    $info = DB::table('likeable_likes')->where('likable_type', '=', 'Model')->where('likable_id', '=', $id)->get();
    $totallikes = DB::table('likeable_like_counters')->where('likable_type', '=', 'Model')->where('likable_id', '=', $id)->sum('count');
    
    if($info == null) {
        return 'No one';
    }
    
    $person = '';
    $comma = '';
    $int = 0;
    $limit = 2;
    $persons = array();
    
    foreach($info as $liker) {
        $persons[] = User::getUsernameByID($liker->user_id);
        $int++;
    }
    
    if($int < $limit) {
        $limit = $int;
    }
    
    $arrslice = array_slice($persons, $limit);
    $parr = array_slice($persons, 0, $limit);
    $miniperson = implode(', ', $parr);
    
    $others = $totallikes - $limit;
    
    if($int > $limit) {
        return $miniperson . ' and <a href="" id="likes" tabindex="0" role="button" data-toggle="popover" data-trigger="focus" data-content="'. implode(', ', $arrslice) . '">' . $others . ' other' . ($others == 1 ? '' : 's') . ' </a> ';
    }
    
    return $miniperson;
    
    }