2015-10-14 69 views
0

我在數據庫中有幾篇文章,我試圖通過搜索它的標題找到一個特定的文章。這是我的控制器。laravel ::找不到類

public function showArticle($title) 
{ 
    $article = Article::find($title); 

    return view('article.show', compact('article')); 

} 

這是我在phpStorm得到錯誤:方法「findOrFail」不上課應用程序/條找到。

這是我的模型:

<?php 

    namespace App; 

    use Illuminate\Database\Eloquent\Model; 



    class Article extends Model 
    { 
     protected $fillable = 
     [ 
     'title', 
     'description', 
     'published_at' 
     ]; 
    } 

這是我的看法,我正在試圖展現文章的標題和描述。

@extends('layouts.master') 

    @section('title', 'All articles') 

    @section('content') 



    <h1>{{$article->title}}</h1> 


    <article> 

     {{$article->description}} 

    </article> 

    @stop 

當我嘗試加載我得到以下錯誤的觀點:

試圖讓非對象(查看物業:/var/www/resources/views/article/show.blade。 php)

回答

1

find()方法不適用於任何你想要的屬性。你必須通過文章的ID來實現這一點。同時通過標題而不是id找到文章要慢得多。 但如果你真的想這樣做,你可以寫這樣的:

$article = Article::where('title', $title)->first(); 

那麼在你看來,這樣做:

@extends('layouts.master') 

@section('title', 'All articles') 

@section('content') 

@if($article) 

<h1>{{$article->title}}</h1> 


<article> 

    {{$article->description}} 

</article> 

@else 
    Article not found 
@endif 

@stop

檢查文檔進行進一步參考: http://laravel.com/docs/5.1/eloquent#retrieving-single-models

0

1.查找具體標題文章

Article::where('title', '=', $title) 

方法find()正在尋找在Model類中定義的主鍵(默認是id列)。

2. compact()功能

觀點,因爲你發送一個數組來查看,而不是對象拋出一個錯誤。

(PHP 4, PHP 5, PHP 7)

compact — Create array containing variables and their values

然後在你Controller變化compact('article')$article或刀片文件更改語法陣列($article['description'])。

0

嘗試

$article = Article::all()->find($title); 

Laravel 5.3

+0

請給予更多的解釋,爲什麼這是正確的答案,以便將來遊客可以理解的。 – Fencer04

+0

非常不好的做法,獲取所有文章,然後過濾收藏? –