簡體   English   中英

Eloquent 構建器實例上不存在屬性 [title],PHP LARAVEL

[英]Property [title] does not exist on the Eloquent builder instance, PHP LARAVEL

之前已經問過此類問題,但沒有一個解決我的特定查詢。 我已經嘗試了所有的解決方案,但似乎都沒有用。 我正在使用 laravel 構建一個博客,當我嘗試編輯我的任何帖子時會發生此特定錯誤。 我們鼓勵大家參與。 謝謝你。

edit.blade.php
@extends('layouts.app')
@section('content')
@if(count($errors)>0)
<ul class="list-group">
    @foreach($errors->all() as $error)
    <li class="list-group-item text-danger">
        {{$error}}
    </li>
    @endforeach
</ul>
@endif
<div class="panel panel-default">
    <div class="panel-heading">
        Edit post{{$post->title}}
    </div>
    <div class="panel-body">
        <form action="{{ route('post.update', ['id'=>$post->id])}}" method="post" enctype="multipart/form-data">
            {{csrf_field()}}
            <div class="form-group">
                <label for="title">Title</label>
                <input type="text" name="title" class="form-control" value="{{$post->title}}">
            </div>
            <div class="form-group">
                <label for="featured">Featured Image</label>
                <input type="file" name="featured" class="form-control">
            </div>
            <div class="form-group">
                <label for="category">Select a Category</label>
                <select type="file" name="category_id" id="category" class="form-control">
                    @foreach($categories as $category)
                    <option value="{{$category->id}}">{{$category->name}}</option>
                    @endforeach
                </select>
            </div>
            

            <div class="form-group">
                <label for="content">Content</label>
                <textarea name="content" id="content" cols="5" rows="5" class="form-control" >{{$post->content}}</textarea>
            </div>
            <div class="form-group">
                <div class="text-center">
                    <button class="btn btn-success" type="submit">Update Post</button>
                </div>
            </div>
        </form>
    </div>
</div>
@stop 

PostController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Str;

use Illuminate\Http\Request;
use App\Category;
use App\Post;

use Session;

class PostController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('admin.posts.index')->with('posts', Post::all());
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {

        $categories =Category::all();
        if ($categories-> count()==0){
            Session::flash('info', 'You must have some categories before attempting to create a post');

            return redirect()->back();
        }
        return view('admin.posts.create')->with('categories', Category::all());


    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        
        $this->validate($request, [
            'title'=> 'required|max:255',
            'featured'=>'required|image',
            'content'=>'required',
            'category_id' => 'required'

        ]);

        $featured=$request->featured;
        $featured_new_name= time().$featured->getClientOriginalName();
        $featured->move('uploads/posts', $featured_new_name);
        $post=Post::create([
            'title'=> $request->title,
            'content'=> $request->content,
            'featured'=> 'uploads/posts/' .$featured_new_name,

            'category_id'=> $request->category_id,
            'slug' => Str::slug($request->title)

        ]);
        Session::flash('success', 'Post created Successfully');

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $post=Post::find($id);
        return view('admin.posts.edit')->with('post', Post::find($id)->with('categories', Category::all()));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

        $post =Post::find($id);

        $this->validate($request, [
            'title'=> 'required',
            'content'=>'required',
            'category_id'=>'required']
        );
        

        if($request->hasfile('featured')){

            $featured=$request->featured;
            $featured_new_name=time() . $featured->getClientOriginalName();
            $featured->move('uploads/posts', $featured_new_name );
            $post->featured=$featured_new_name;

        }

        $post->title=$request->title;
        $post->content=$request->content;
        $post->category_id=$request->category_id;

        $post->save();
        Session::flash('success', 'Your post was just updated.');

        return redirect()->route('posts');



    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $post =Post::find($id);

        $post->delete();

        Session::flash('success', 'Your post was just Trashed.');

        return redirect()->back();
    }
}

屬性 [title] 在 Eloquent 構建器實例中不存在

此錯誤消息告訴您您正在嘗試在類型為“Eloquent builder”的實體上加載名為“title”的屬性。

Eloquent builder是object的類型,可以用來查詢數據庫。 在 Eloquent 構建器實例上調用 ->first() 的結果將是一個 Property 實體,這可能是您想要的。

請檢查並共享從數據庫加載屬性的代碼。 您是否執行了某些操作(例如 ->first())來執行查詢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM