代码之家  ›  专栏  ›  技术社区  ›  Yosef

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

  •  6
  • Yosef  · 技术社区  · 8 年前

    好吧,我要 Trying to get property of non-object 当我尝试使用 $settings = AdminSettings::first();

    这是控制器代码

        <?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

    4 回复  |  直到 8 年前
        1
  •  10
  •   Alexey Mezenin    8 年前

    您说过表是空的,所以请将设置设为对象 optional :

    {{ optional($settings)->site_title }}
    
        2
  •  1
  •   YouneL    8 年前

    您可以使用 or 操作员也:

    {{ $settings->site_title or ''  }}
    
        3
  •  0
  •   LegoBoy    8 年前

    使用empty检查对象:

    @if(!empty($settings->site_title))
      {{ $settings->site_title }}
    @else
      "Nothing"
    @endif
    
        4
  •  0
  •   Sohel0415    8 年前

    使用 find() 获取单个集合

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

    您可以使用 first

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

    如果您需要整个系列,请使用 all()

    $settings = AdminSettings::all();
    

    在您看来,请使用-

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