首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >拉勒维尔残渣秀空

拉勒维尔残渣秀空
EN

Stack Overflow用户
提问于 2022-09-30 07:16:05
回答 4查看 109关注 0票数 2

我有一个有亲戚关系的蓝莓渣。但是,当我想要加载页面时,一些表行没有值。这会导致错误:“尝试读取null上的属性"name”

但是如何忽略这条消息并继续在页面中加载呢?

index.blade:

代码语言:javascript
代码运行次数:0
运行
复制
    @foreach($files as $file)
        <tr>
            <td>{{$file->id}}</td>
            <td>{{$file->title}} </td>
            <td>{{$file->description_short}} </td>
            <td>{{$file->description_long}} </td>
            <td>{{$file->file}}</td>
            <td>{{$file->language->name}} </td>
            <td>{{$file->subfolder->name}} </td>
          
            <td>{{$file->role->name}} </td>
            <td>
                <a href="{{ route('admin.file.edit',$file->id)}}" class="btn btn-primary">Edit</a>
            </td>
            <td>
                <form action="{{ route('admin.file.destroy', $file->id)}}" method="post">
                  @csrf
                  @method('DELETE')
                  <button class="btn btn-danger" type="submit">Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </tbody>
  </table>

主计长:

代码语言:javascript
代码运行次数:0
运行
复制
 public function index()
    {
        $files = File::with('subfolder', 'language', 'tag')->get();
        $languages = Language::all();
        $tags = Tag::all();
        $subfolders = Subfolder::all();
        $users = User::all();    
        return view('admin.file.index', compact('files', 'languages', 'tags', 'users', 'subfolders'));
    }

我希望索引忽略所有空属性。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-09-30 07:24:04

在php变量之前使用@,如下所示。

代码语言:javascript
代码运行次数:0
运行
复制
{{@$file->language->name}} 
票数 2
EN

Stack Overflow用户

发布于 2022-09-30 07:28:23

同时,通过使用

代码语言:javascript
代码运行次数:0
运行
复制
{{ $file->language->name ?? '' }} # typical PHP way
{{ $file->language?->name }} # if object/relation "language" exist then access "name" propery

注意:

当您将@用于变量{{@$file->language->name}}时,我们将跳过错误消息。这意味着我们要告诉“别管这个变量”--这不是检查空的最好方法

票数 1
EN

Stack Overflow用户

发布于 2022-09-30 09:21:27

有多种方式:

  • 错误控制操作符: @$file->language->name -- @操作符禁止错误消息(imho不太干净:),但结果相同) 来自文档: //注意:@-运算符只对表达式起作用。一个简单的经验法则是:如果一个人能够获得某物的价值,那么你就可以将@操作符加到它前面。//例如,它可以被添加到变量、函数调用、某些语言构造调用(例如包含)中,等等。//它不能用于函数或类定义,或条件结构,如if和foreach,等等。

  • 经典三值算子方法 $file->language ? $file->language->name : null;

  • PHP7+:空合并操作符 $file->language->name ?? null;

  • PHP8+:空安全运算符 $file->language?->name; (惊人!:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73905220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档