In my blog I present all the articles in the beginning with a substr of what the post says, then I have a button to read more to see the article in another view and that's where my error comes from. It shows me the following error " Call to undefined method Illuminate \ Database \ Query \ Builder :: findBySlug () "
My route is as follows
Route::get('article/{slug}',[
'uses' => 'FrontController@article',
'as' => 'article'
]);
My FrontController @ article
<?php
namespace Blog\Http\Controllers;
use Illuminate\Http\Request;
use Blog\Http\Requests;
use Blog\Articulo;
use Blog\User;
use Blog\Categoria;
use Blog\Http\Controllers\Controller;
class FrontController extends Controller{
public function article($slug){
$articul = Articulo::findBySlug($slug);
return view('articulo',compact('articul'));
}
}
My view article
<div class="row">
<div class="col-md-8">
<h1>Ultimas Noticias</h1>
<article>
<h2>{{$articul->titulo}}</h2>
<div class="row">
<div class="col-md-6">
<span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span> {{ $articul->categoria->categoria }}
<span class="glyphicon glyphicon-user" aria-hidden="true"></span> {{ $articul->user->name }}
</div><!--fin del col-md-6-->
<div class="col-md-6">
<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span> {{ $articul->created_at }}
</div><!--fin del col-md-6-->
</div><!--fin del row dentro de col-md-8-->
<br>
<img src="img/{{$articul->path }}" alt="" class="img-responsive">
<br>
<p>{{ $articul->contenido }}</p>
</article>
</div> <!--fin del col-md-8-->
When I show my articles through the index if it looks good, but when I try to see an article in particular I loose that error.
Model Article
<?php
namespace Blog;
use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;
use Carbon\Carbon;
class Articulo extends Model{
use Sluggable;
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable(){
return [
'slug' => [
'source' => 'titulo'
]
];
}
protected $table = 'articulos';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['titulo', 'contenido','slug','path','etiqueta','user_id','categoria_id'];
public function setPathAttribute($path){
if(! empty($path)){
$name = Carbon::now()->second.$path->getClientOriginalName();
$this->attributes['path'] = $name;
\Storage::disk('local')->put($name, \File::get($path));
}
}
public function categoria(){
return $this->belongsTo('Blog\Categoria');
}
public function user(){
return $this->belongsTo('Blog\User');
}
public function scopeTitulo($query, $titulo){//Funcion para hacer una busqueda
if(trim($titulo) != ''){ //Funcion trim para eliminar los espacios
$query->where(\DB::raw("titulo"),"LIKE","%$titulo%");
}
}
}