Php Laravel 5.1发送到视图的数据错误

Php Laravel 5.1发送到视图的数据错误,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,我在我的主页上显示了所有的项目,想展示一下amny是如何喜欢每个项目的。likes以唯一的id和项目id存储在likes表中 因此,在我的ProjectsController中,我编写了一个计数查询,当我在控制器中回显输出时,查找每个项目有多少喜欢,一切正常,但在我看来,结果总是0 我的控制器功能 public function home_projects() { $projects = Project::all(); foreach ($projects as $projec

我在我的主页上显示了所有的项目,想展示一下amny是如何喜欢每个项目的。likes以唯一的id和项目id存储在likes表中

因此,在我的ProjectsController中,我编写了一个计数查询,当我在控制器中回显输出时,查找每个项目有多少喜欢,一切正常,但在我看来,结果总是0

我的控制器功能

public function home_projects()
{
    $projects = Project::all();

    foreach ($projects as $project){
        $likes = Like::where('project_id', '=', $project->id)->count();
        echo $likes;
    }

    //return $projects;
    return view('welcome', ['projects' => $projects, 'likes' => $likes]);
}
我的看法是:

@foreach ($projects as $project)
            <div class="col-md-4 grid_item">


                <a class="grid_link" href="projects/{{ $project->id }}">
                    <img class="imagebox" src="uploads/projects/{{ $project->file_name }}">
                </a>


                <div class="image_actions">
                    <form action="" method="post" class="form-inline">
                        <button type="submit" class="like_button">Like</button>
                        <label for="">{{ $likes }}</label>
                        <button type="submit" class="comment_button">Comment</button>
                        <label for="">3</label>
                        <button type="submit" class="favourite_button">Favourite</button>
                    </form>
                </div>
            </div>
            @endforeach
@foreach($projects作为$project)
喜欢
{{$likes}
评论
3.
最喜欢的
@endforeach

您必须将您的
$likes
存储在一个数组中

因为在实际代码中,var
$likes
总是(重新)设置为cause
foreach(){}

例:

更新

并展示它

<?php $key = 0; ?>
@foreach ($projects as $project)
            <div class="col-md-4 grid_item">


                <a class="grid_link" href="projects/{{ $project->id }}">
                    <img class="imagebox" src="uploads/projects/{{ $project->file_name }}">
                </a>


                <div class="image_actions">
                    <form action="" method="post" class="form-inline">
                        <button type="submit" class="like_button">Like</button>
                        <label for="">{{ $likesArray[$key] }}</label>
                        <button type="submit" class="comment_button">Comment</button>
                        <label for="">3</label>
                        <button type="submit" class="favourite_button">Favourite</button>
                    </form>
                </div>
            </div>
            // increment your key var
            <?php $key++; ?>
            @endforeach

@foreach($项目作为$项目)
喜欢
{{$likesArray[$key]}
评论
3.
最喜欢的
//增加您的密钥变量
@endforeach

顺便说一句,这不是一个好的实践,但是修复应该有效

另一种方法是设置模型关系。() 在模型项目中:

public function likes() {
  return $this->hasMany('Like', 'project_id');
}
现在,您的控制器将是:

$projects = Project::all();
return view('welcome', ['projects' => $projects]);
需要时就地查看:

{{ $project->likes()->count() }}
UPD:I固定返回值。现在在控制器返回视图中:

return view('welcome', ['projects' => $projects]);

在拉威尔我该怎么做?我对FrameworkKay有点陌生,所以我将数组发送到我的视图,如下所示:返回视图('welcome',['projects'=>$projects,'likesArray'=>$likesArray]);然后在我的视图中,我用foreach再次循环数组?这似乎不起作用,我得到了一个数组到字符串的转换错误我必须将整个数组传递到视图并在视图中循环出正确的答案吗?看看我的更新(我不确定Blade中声明变量的语法)我在控制器未定义变量中的返回行上得到一个错误:likes我现在在Model.php行906中得到这个错误FatalErrorException:Class'Like'notfound@MoussaChaabar你创建了类似的模型吗?请阅读此参考资料。我看不到你完整的项目结构。我不能一步一步地说你应该做什么。但是,如果创建模型用户并在
return$this->hasMany(“{model namespace}”,“project_id”)中插入正确的名称空间一切都应该正常。我已经通过在函数likes()中将其更改为App\Like来修复了它。它现在可以正常工作了。非常干净的代码谢谢!
return view('welcome', ['projects' => $projects]);