Laravel中的自定义主键无法正常工作

ale*_*lev 2 laravel laravel-5.6

我在Task.php模型中设置了一个自定义主键.

class Task extends Model
{
    //

    protected $primaryKey = 'taskn';
    public $incrementing = false;

}
Run Code Online (Sandbox Code Playgroud)

我还将其设置taskn为迁移中的主键:

$table->string('taskn');

$table->primary('taskn');
Run Code Online (Sandbox Code Playgroud)

但我仍然得到错误

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select * from `Task` where `id` = 1 limit 1)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,Laravel仍然试图查询id.

我试图通过以下调用检索数据:

$tasks = DB::table('tasks')->find($taskn);
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

cee*_*yoz 7

我正在做 $tasks = DB::table('tasks')->find($taskn);

这是你的问题.

DB::电话不使用Eloquent - 你完全绕过它.如果你这样做Task::find($taskn)会工作,但DB::电话不知道你的$primaryKey设置.

  • @alev,为什么你有一个Eloquent模型时会使用这样的DB调用?似乎很奇怪. (4认同)