【问题标题】:Show an attribute from other model in blade (Laravel)在刀片(Laravel)中显示来自其他模型的属性
【发布时间】:2020-03-18 05:50:03
【问题描述】:

我的刀片模板中有这个异常。我在我的两个模型(RegisteredCourses y User)之间建立了关系,我可以看到它在 Blade 模板的其余部分中工作,除了 form.blade.php

试图获取非对象的属性“用户”(视图:C:\laragon\www\hr-english\resources\views\registeredCourse\form.blade.php)(视图:C :\laragon\www\hr-english\resources\views\registeredCourse\form.blade.php)

我的想法是在我的刀片模板中显示用户的名称,但我需要在值中输入对应的 user_id。

我不知道解决这个问题的正确方法是什么。

<div class="form-group {{ $errors->has('course_id') ? 'has-error' : '' }}">
    <label for="course_id" class="col-md-2 control-label">Course</label>
    <div class="col-md-10">
        <select class="form-control" id="course_id" name="course_id">
            <option value="" style="display: none;" {{ old('course_id', optional($registeredCourse)->course_id ?: '') == '' ? 'selected' : '' }} disabled selected>Select course</option>
            @foreach ($courses as $key => $course)
                <option value="{{ $key }}" {{ old('course_id', optional($registeredCourse)->course_id) == $key ? 'selected' : '' }}>
                    {{ $course }}
                </option>
            @endforeach
        </select>

        {!! $errors->first('course_id', '<p class="help-block">:message</p>') !!}
    </div>
</div>

<div class="form-group {{ $errors->has('user_id') ? 'has-error' : '' }}">
    <label for="status_course" class="col-md-2 control-label">Name</label>
    <div class="col-md-10">
        <input class="form-control" name="user_id" type="text" id="user_id" value="{{ old('user_id', optional($registeredCourse->user->name)) }}" minlength="1" placeholder="Enter name here..."> <!--Problwm here-->
        {!! $errors->first('name', '<p class="help-block">:message</p>') !!}
    </div>
</div>

<div class="form-group {{ $errors->has('status_course') ? 'has-error' : '' }}">
    <label for="status_course" class="col-md-2 control-label">Status Course</label>
    <div class="col-md-10">
        <input class="form-control" name="status_course" type="text" id="status_course" value="{{ old('status_course', optional($registeredCourse)->status_course) }}" minlength="1" placeholder="Enter status course here...">
        {!! $errors->first('status_course', '<p class="help-block">:message</p>') !!}
    </div>
</div>

【问题讨论】:

  • 尝试optional(optional($registeredCourse)-&gt;user)-&gt;name 而不是optional($registeredCourse-&gt;user-&gt;name) [未测试]
  • 谢谢,但它不起作用。我的想法是抓取输入值中的user_id存入数据库,但我想在表单中显示用户名。

标签: laravel


【解决方案1】:

在刀片中使用 null coalescing operator: $registeredCourse-&gt;user-&gt;name ?? null 而不是 optional($registeredCourse-&gt;user-&gt;name)

UPS:Here's a demo 根据是否设置了 $registeredCourse-&gt;user 来说明其工作原理。

【讨论】:

  • 谢谢。不工作。我不知道为什么,但似乎不可能显示名称并将值存储在数据库中
  • 我测试了它,无论是否设置了用户,它都适用于这两种情况。这是一个演示链接:3v4l.org/tgEkZ
  • 帕维尔,我是初学者。如果这是一个愚蠢的问题,我不知道,但我使用的是 Laravel,你在我的刀片模板中的代码将是这样的: value="{{ old('user_id', $registeredCourse->user->name ?? null }}" 我说的对吗?
  • 几乎! value="{{ old('user_id', $registeredCourse-&gt;user-&gt;name ?? null) }} 。你错过了最后的)。祝 Laravel 好运!随时提出更多问题,您会在这里得到很好的支持 :)
猜你喜欢
  • 2015-08-11
  • 2018-03-12
  • 2013-01-23
  • 2020-02-03
  • 1970-01-01
  • 2017-06-11
  • 2020-04-09
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多