Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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 如何仅在定义数据时将其传递给视图?_Php_Laravel - Fatal编程技术网

Php 如何仅在定义数据时将其传递给视图?

Php 如何仅在定义数据时将其传递给视图?,php,laravel,Php,Laravel,正如您在我下面的代码中所看到的,$similarImages正在传递给视图,但是,可能没有其他类似的图像,这意味着我将传递一个未定义的变量。这就是为什么只有在存在$similarImages时,我才需要传递'similarImages'=>$similarImages $tag = Tag::whereHas('images', function($q) use ($id) { return $q->where('image_id', $id); }

正如您在我下面的代码中所看到的,$similarImages正在传递给视图,但是,可能没有其他类似的图像,这意味着我将传递一个未定义的变量。这就是为什么只有在存在$similarImages时,我才需要传递
'similarImages'=>$similarImages

$tag = Tag::whereHas('images', function($q) use ($id) {
            return $q->where('image_id', $id);
        })->first();

        if (!empty($tag)) {
            $tagId = $tag->id;
        }

        $recentImages = Image::where('user_id', $authorId)->orderBy('created_at', 'desc')->limit(9)->get();

        if (!empty($tagId)) {
            $similarImages = Image::whereHas('tags', function($q) use ($tagId) {
                return $q->where('tag_id', $tagId);
            })->orderBy('created_at', 'desc')->limit(9)->get();
        }

        return view('specificImage', ['image' => $image, 'recentImages' => $recentImages, 'similarImages' => $similarImages, 'author' => $author, 'comments' => $comments]);

使用null合并运算符可获得默认值:

[ .. 'similarImages' => $similarImages ?? collect(), .. ]
如果定义了$similarImages,则它将使用$similarImages,否则它将分配由
collect()
创建的空集合


我喜欢它总是被收藏的想法,但那只是我

使用空合并运算符来获得默认值:

[ .. 'similarImages' => $similarImages ?? collect(), .. ]
如果定义了$similarImages,则它将使用$similarImages,否则它将分配由
collect()
创建的空集合


我喜欢它总是被收藏的想法,但那只是我

$array始终传递给视图

如果设置了$similarImages,只需将$similarImages前置到$array中即可

如果没有设置$similarImages,只返回$array(在这种情况下,$similarImages将不存在于blade中)

这里还可以使用array_add($array,'similarImages',$similarImages)


$array始终传递给视图

如果设置了$similarImages,只需将$similarImages前置到$array中即可

如果没有设置$similarImages,只返回$array(在这种情况下,$similarImages将不存在于blade中)

这里还可以使用array_add($array,'similarImages',$similarImages)


['image'=>$image,'recentImages'=>$recentImages,'author'=>$author,'comments'=>$comments]+(isset($similarImages)?['similarImages'=>$similarImages]:[])
有时我会设置一个空的默认值或更改返回视图。。。。code首先将其定义为函数顶部附近的
$similarImages=null
。是否确实希望在视图中未定义它?还是空?还是一个空的集合?我很少认为不定义它是个好主意。嘿,德文,这就是为什么我要问只有定义了它才能通过它的原因。Aynber的想法非常有效。
['image'=>$image,'recentImages'=>$recentImages,'author'=>$author,'comments'=>$comments]+(isset($similimages)?['similimages'=>$similimages]:[])
是我有时会设置一个空的默认值或更改返回视图的东西。。。。code首先将其定义为函数顶部附近的
$similarImages=null
。是否确实希望在视图中未定义它?还是空?还是一个空的集合?我很少认为不定义它是个好主意。嘿,德文,这就是为什么我要问只有定义了它才能通过它的原因。Aynber的想法很管用。collect()在这种情况下做什么?创建一个空集合,因此您可以始终相信它在视图中是一个集合。因为我不熟悉集合,所以我尝试通过google ing collect()阅读一些文档,但似乎找不到任何内容。无论何时使用查询生成器使用
get()
,您将返回一组模型
collect()
是一个特定于Laravel的函数,用于将
数组
转换为
集合
,后者是包装器/帮助器类。请参见此处collect()在本例中的作用?创建一个空集合,因此您可以始终相信它在视图中是一个集合。由于我不熟悉集合,我尝试使用google ing collect()阅读一些文档,但似乎找不到任何内容。无论何时您使用查询生成器使用
get()
,您将返回一组模型
collect()
是一个特定于Laravel的函数,用于将
数组
转换为
集合
,后者是包装器/帮助器类。看这里试着提供一个解释;只有代码的答案提供的解决方案可能不会对所有用户都很明显,因此对您所做的更改进行简短的解释将大有帮助;只使用代码的答案提供的解决方案可能不会对所有用户都很明显,因此对您所做的更改进行简短的解释将大有帮助。