Reputation: 1590
Hello I am new in Laravel and this is my first app
I am getting error: Call to undefined method stdClass::save()
This is my modal code named Song.php:
<?php namespace App;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Song extends Eloquent{
protected $table = 'songs';
protected $fillable = ['title'];
}
And this is my controller code named PageController.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\Request;
use App\Song;
use DB;
abstract class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
class PageController extends Controller{
public function update($slug, Request $request){
//dd(\Request::input());
$song_name = DB::table('songs')->whereSlug($slug)->first(); /***songs is a table name ****/
$song_name->title = $request->get('title');
$song_name->save();
return redirect('slug'.$song_name->slug.'/edit');
//return "Update page";
}
}
But I am getting error Call to undefined method stdClass::save() on my pageController my datatable name is songs
Upvotes: 1
Views: 425
Reputation: 40909
You are using DB facade to get songs from the database - that's why you're getting results as object of stdClass. Use Eloquent model's methods instead and you'll get objects of Song class.
Replace
$song_name = DB::table('songs')->whereSlug($slug)->first();
with
$song_name = Song::whereSlug($slug)->first();
Upvotes: 3