问题描述
当用户单击链接时,我试图通过使用列SongID
从数据库中获取特定数据,但出现此错误:
I am trying to get specific data from the database by using column SongID
when a user clicks a link but I am getting this error:
控制器类:
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use DB;
class SongsController extends Controller {
public function index()
{
$name = $this->getName();
$songs = DB::table('songs')->get();
return view('songs.index', compact('songs','name'));
}
public function show($id)
{
$name = $this->getName();
$song = DB::table('songs')->find($id);
return view('songs.show', compact('song','name'));
}
private function getName()
{
$name = 'Tupac Amaru Shakur';
return $name;
}
}
迁移:
public function up()
{
Schema::create('songs', function($table)
{
$table->increments('SongID');
$table->string('SongTitle')->index();
$table->string('Lyrics')->nullable();
$table->timestamp('created_at');
});
}
推荐答案
使用find()
时,它会自动假定您的主键列将为id
.为了使其正常工作,您应该在模型中设置主键.
When you use find()
, it automatically assumes your primary key column is going to be id
. In order for this to work correctly, you should set your primary key in your model.
因此,在Song.php
的类中,添加以下行...
So in Song.php
, within the class, add the line...
protected $primaryKey = 'SongID';
如果有可能更改架构,我强烈建议命名您的所有主键列id
,这是Laravel所假定的,并且可能使您免于日后的麻烦.
If there is any possibility of changing your schema, I'd highly recommend naming all your primary key columns id
, it's what Laravel assumes and will probably save you from more headaches down the road.
这篇关于SQLSTATE [42S22]:找不到列:1054"where子句"中的未知列"id"(SQL:从“歌曲"中选择*,其中"id" = 5限制1)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!