我正在https://laracasts.com/series/laravel-from-scratch处理Laravel 4 From Scratch教程。教程4:数据库访问描述了几种从数据库中检索数据的方法。
特别是我无法开始工作:
在我的routes.php中,我有
Route::get('/', function()
{
$bottle = DB::table('bottle')->find(1);
dd($bottle);
});
唯一的输出是"哎呀,看起来出了问题。"页。在我的数据库的bottle表中,主键的名称为bottle_ID。我猜这与问题有关,但我找不到有关如何更改find()参数的任何信息。那么如何使用' find'从我的数据库返回一个对象?
以下代码可行:
// returns everything from bottle table
$bottles = DB::table('brewery')->get();
return $bottles;
// returns all data for the bottle with an ID of 10
$bottle = DB::table('bottle')->where('bottle_ID', '=', 10)->get();
return $bottle;
// returns all ales from the database
$bottles = DB::table('bottle')->where('beer_type', '=', 'Ale')->get();
return $bottles;
答案 0 :(得分:2)
在查询构建器(DB::table()...
)中使用时,find()
方法将主键列硬编码为id
:
public function find($id, $columns = array('*'))
{
return $this->where('id', '=', $id)->first($columns);
}
您应该使用where()
和first()
:
$bottle = DB::table('bottle')->where('bottle_ID', 1)->first();
或者,如果您决定使用Eloquent Models,则可以指定键列名称:
class Bottle extends Eloquent {
protected $primaryKey = 'bottle_ID';
}
并检索这样的模型:
$bottle = Bottle::find(1);