Laravel - 尝试在 ::first() 上获取 属性 的非对象

Laravel - Trying to get property of non-object on ::first()

好的,当我尝试使用 $settings = AdminSettings::first();

从数据库中获取数据时,我得到了 Trying to get property of non-object

这里是控制器代码

    <?php

namespace App\Http\Controllers\AdminSettings;

use App\AdminSettings\AdminSettings;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AdminSettingsController extends Controller
{
    public function index()
    {
        $settings = AdminSettings::first();

        return view('admins.settings.settings', compact('settings'));
    }
}

这里是模态代码

    <?php

namespace App\AdminSettings;

use Illuminate\Database\Eloquent\Model;

class AdminSettings extends Model
{
    protected $table = 'site_settings';
    protected $fillable = [
        'site_title', 'site_url', 'email_from', 'email_to', 'timezone', 'date_format', 'time_format',
    ];
}

这里我想把 site_title into the input but I get Trying to get property of non-object

<div class="form-group">
                        <label for="site_title" class="form-label">Site Title</label>
                        <input type="text" class="form-control" name="site_title" id="site_title" value="{{ $settings->site_title }}"/>
                    </div>

当我尝试 dd($settings); 我得到 null

使用find()获得一个collection

$settings = AdminSettings::find($id);

您也可以使用 first

 $settings = AdminSettings::where('id',$id)->first();

如果你需要整个 collection 然后使用 all()

$settings = AdminSettings::all();

在您看来,用-

做一个简单的检查
<input type="text" class="form-control" name="site_title" id="site_title" value="<?php echo ($settings)?$settings->site_title:'' >"/>

您也可以使用 or 运算符:

{{ $settings->site_title or ''  }}

你说 table 是空的,所以设置对象 optional:

{{ optional($settings)->site_title }}

使用空检查对象:

@if(!empty($settings->site_title))
  {{ $settings->site_title }}
@else
  "Nothing"
@endif