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

So, I get Trying to get property of non-objectwhen I try to get data from a DB using$settings = AdminSettings::first();

here is the controller code

    <?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'));
    }
}

modal code is presented here

    <?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',
    ];
}

here i'm trying to put 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>

when i try to dd($settings);getnull

+4
source share
4 answers

You said that the table is empty, so make the settings object optional:

{{ optional($settings)->site_title }}
+7
source

use find () to get one collection

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

You can also use first.

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

And if you need a whole collection, use all ()

$settings = AdminSettings::all();

In your opinion, do a simple check with

<input type="text" class="form-control" name="site_title" id="site_title" value="<?php echo ($settings)?$settings->site_title:'' >"/>
0

You can also use the operator or:

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

use empty to validate the object:

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

Source: https://habr.com/ru/post/1691795/


All Articles