Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel DB get左联接表列的和(相对于一个post向上/向下的拇指的和)_Php_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Php Laravel DB get左联接表列的和(相对于一个post向上/向下的拇指的和)

Php Laravel DB get左联接表列的和(相对于一个post向上/向下的拇指的和),php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有一个评论网站,用户可以随意浏览评论。评论表的存在是因为我使用的是我发现的Laravel样板文件。我已经使用migrate添加了thumbs表,并创建了一个模型和控制器 这是有问题的两张桌子 reviews +----+-----------------+------------+-----------+---------+ | id | review_constant | title | publish | etc... | +----+-----------------+-

我有一个评论网站,用户可以随意浏览评论。评论表的存在是因为我使用的是我发现的Laravel样板文件。我已经使用migrate添加了thumbs表,并创建了一个模型和控制器

这是有问题的两张桌子

reviews
+----+-----------------+------------+-----------+---------+
| id | review_constant | title      | publish   | etc...  |
+----+-----------------+------------+-----------+---------+
| 1  | 1               | Test       | published | blah    |
| 2  | 2               | Test2      | old       | blah    |
| 3  | 2               | Test2 Edit | published | blah    |
+----+-------+---------+------------+-----------+---------+

review_thumbs
+----+---------+-----------------+-------+
| id | user_id | review_constant | thumb |
+----+---------+-----------------+-------+
| 1  |  12     |   2             |  1    |
| 2  |  10     |   2             | -1    |
| 3  |  8      |   2             |  1    |
| 4  |  17     |   2             |  1    |
+----+---------+-----------------+-------+
review\u常量
是原始的
reviews.id
,它被传递给任何编辑以进行单个审阅。我们只对
publish='published'
的行感兴趣

我可以得到每一个发表的评论没有问题

Reviews::where( 'publish', 'published' )
但我还需要与该review的review_常量相匹配的拇指总数,我可以用SQL来实现这一点

SELECT reviews.id, reviews.review_title, rt.review_constant, rt.thumbs
FROM reviews 
LEFT JOIN ( 
    SELECT review_constant, SUM(thumb) AS thumbs FROM review_thumbs 
) AS rt ON (rt.review_constant = reviews.review_constant)
where reviews.publish = 'published'
我在拉威尔努力做到这一点。我发现一些说明告诉我需要添加这样的关系

class ReviewThumbs extends Model
{
    public function reviews()
    {
        return $this->belongsTo(Reviews::class, 'review_constant', 'review_constant');
    }
    ...

}

class Review extends Model
{

    public function reviewThumbs(){
        return $this->hasMany(ReviewThumbs::class, 'review_constant', 'review_constant');
    }
    ...
}
然后我可以用('review_thumbs')完成这个
Reviews::where('publish','published')->,然后我应该能够在刀片模板中使用它。我不知道正确的语法,我做的每件事都会出错。我尝试了sum()、count(),使用getReviewThumbsAttribute,但我迷路了

@if ($review->thumbs->sum() > 0 ) 
    +{{ $review->thumbs->sum() }}
@else
    {{ $review->thumbs->sum() }}
@endif

应该用什么来代替
$review->thumbs->sum()
,如果需要,我需要向PHP类添加哪些方法?

每个
review
都与
review\u thumbs
有一对多的关系,
review\u常量
列表示
review
表的
id
。因此,您的
审查
模型应该如下所示:

class-Review扩展了模型{
公共职能部门审查委员会(){
return$this->hasMany(查看humbs::class'id',post_id');
}
公共职能部门审查委员会(){
返回$this->hasMany(ReviewThumbs::class,'review_constant','id');
}
公共函数thumbsUp(){
return$this->hasMany(ReviewThumbs::class,'review_constant','id')->where('thumb','=',1);
}
公共函数thumbsDown(){
return$this->hasMany(ReviewThumbs::class,'review_constant','id')->where('thumb','=',-1);
}
}
现在,对于任何
review
实例,您可以简单地计算出现次数或对
thumb
列求和

$sum=$review->reviewThumbs()->sum('thumbs');
$thumbUps=$review->thumbUp()->count();
$thumbsdowns=$review->thumbsDown()->count();

我希望这会有所帮助。

每个
查看
都与
查看的拇指有一对多的关系
并且
查看的常量
列表示
查看
表的
id
。因此,您的
审查
模型应该如下所示:

class-Review扩展了模型{
公共职能部门审查委员会(){
return$this->hasMany(查看humbs::class'id',post_id');
}
公共职能部门审查委员会(){
返回$this->hasMany(ReviewThumbs::class,'review_constant','id');
}
公共函数thumbsUp(){
return$this->hasMany(ReviewThumbs::class,'review_constant','id')->where('thumb','=',1);
}
公共函数thumbsDown(){
return$this->hasMany(ReviewThumbs::class,'review_constant','id')->where('thumb','=',-1);
}
}
现在,对于任何
review
实例,您可以简单地计算出现次数或对
thumb
列求和

$sum=$review->reviewThumbs()->sum('thumbs');
$thumbUps=$review->thumbUp()->count();
$thumbsdowns=$review->thumbsDown()->count();

我希望这能有所帮助。

review\u常量
与review表的
id
不匹配;它匹配
审阅。审阅\u常量
。使用该固定和()只计算+ve值。如果我将-1调整为正值,则会将它们相加。但当它们小于零时,它们就会被忽略<代码>返回$this->hasMany(ReviewThumbs::class,'review_constant','review_constant')->其中('thumb','因此,当列为tinyint或decimal时,它不会将-1识别为-ve,但会将-2识别为-ve。当列为varchar时,它会按预期工作。
review\u常量
与review表的
id
不匹配;它匹配
reviews.review\u常量
,与该固定和()只计算+ve值。如果我将-1调整为正值,它会将它们相加。但当它们小于零时,它们将被忽略。
return$this->hasMany(ReviewThumbs::class,'review_constant','review_constant')->其中('thumb','因此,当列为tinyint或decimal时,它不会将-1识别为-ve,但会将-2识别为-ve。当列为varchar时,它会按预期工作。