Laravel Closure Function is not working (with) 关系

Laravel Closure Function is not working (with) relation

提问人:XtyLish Sam 提问时间:10/12/2022 更新时间:10/12/2022 访问量:598

问:

开发人员您好,我希望你们都很好。 我已经有 2 或 3 天的问题了,我不知道如何解决这个问题。代码如下。但它总是回来

错误:方法名称必须是第 764 行文件 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php 中的字符串

            $feeds = Feed::where("id",$request->feed_id)
                ->with("media","likes","customer",['comments'=>function($query){
                    foreach ($query as $comment){
                        return $comment->id;
                    }
                }])
                ->first();
PHP Laravel 雄辩 的闭包 关系

评论

0赞 JS TECH 10/12/2022
在 中定义闭包的目的是什么?comments
0赞 XtyLish Sam 10/12/2022
我希望该评论的每个用户,在用户的评论模型中使用 belongsTo
0赞 XtyLish Sam 10/12/2022
这工作得很好,我之前正在使用它,我只想要我有多个评论,每个评论都与不同的用户相关,我只想使用反向关系的用户名和个人资料图片
0赞 XtyLish Sam 10/12/2022
我有一个提要,一个提要可以有很多多条评论,评论可以有多个用户(谁在这个提要上发表了评论),我得到了所有评论,每个评论都有不同的用户,我想要那个带有评论的用户名,而不是 ID

答:

0赞 JS TECH 10/12/2022 #1

您可以使用嵌套来获取用户名和图片。with()

$feed = Feed::where("id",$request->feed_id)
        ->with([
            "media",
            "likes",
            "customer",
            "comments"=> fn($query) => $query->with('user')
        ])
        ->first();


foreach ($feed->comments as $comment) {
    $user_name = $comment->user->name;
    $user_picture = $comment->user->picture;
}