2015-12-03 52 views
1

更新你好,我在Laravel是新的,這是我的第一個應用程序不能在laravel

我得到錯誤:調用未定義的方法stdClass的::保存()

這是我的模態代號爲宋。 PHP:

<?php namespace App; 

use Illuminate\Database\Eloquent\Model as Eloquent; 

class Song extends Eloquent{ 
    protected $table = 'songs'; 
    protected $fillable = ['title']; 
} 

這是我命名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"; 
    } 
} 

但我我在我的PageController收到錯誤調用未定義的方法stdClass的::保存()我的數據表的名字是歌曲

+1

如果你想使用save()方法,你需要使用雄辯不查詢生成器http://laravel.com/docs/5.0/eloquent#插入更新 - 刪除 –

回答

3

您正在使用DB門面從數據庫中獲取的歌曲 - 這就是爲什麼你得到結果的對象stdClass的 。改用Eloquent模式的方法,你會得到Song類的對象。

更換

$song_name = DB::table('songs')->whereSlug($slug)->first(); 

$song_name = Song::whereSlug($slug)->first(); 
+0

感謝兄弟的工作。 請解釋一下宋:whereSlug($ slug) - > first();它裏面的歌是我用在我的模型中的名字 –

+0

http://laravel.com/docs/5.1/eloquent –