我在尝试添加或更新与其他表(telepon)具有一对一关系的表(siswa)中的数据时出现问题,当我提交数据(添加/更新)时,我不断收到此错误SQLSTATE [42S22 ]:找不到列:1054未知列' nomor_telepon' in 'where clause'(SQL:从 telepon
中选择count(*)作为聚合,其中 nomor_telepon
= 081255758609) .
这是表siswa迁移代码:
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTableSiswa extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('siswa', function (Blueprint $table) {
$table->increments('id');
$table->string('nisn',4)->unique();
$table->string('nama_siswa',50);
$table->date('tanggal_lahir');
$table->enum('jenis_kelamin',['L','P']);
$table->integer('id_kelas')->unsigned();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('siswa');
}
}
表格电话迁移代码:
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTableTelepon extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('telepon', function (Blueprint $table) {
$table->integer('id_siswa')->unsigned();
$table->primary('id_siswa');
$table->foreign('id_siswa')
->references('id')->on('siswa')
->onDelete('cascade')
->onUpdate('cascade');
$table->string('nomor_telepon')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('telepon');
}
}
型号Siswa代码:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Siswa extends Model
{
protected $table = 'siswa';
protected $fillable = [
'nisn',
'nama_siswa',
'tanggal_lahir',
'jenis_kelamin'
];
protected $dates = ['tanggal_lahir'];
public function getNamaSiswaAttribute($nama_siswa)
{
return ucwords($nama_siswa);
}
public function telepon()
{
return $this->hasOne('App\Telepon', 'id_siswa');
}
public function kelas()
{
return $this->belongsTo('App\Kelas', 'id_kelas');
}
}
型号电话代码:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Telepon extends Model
{
protected $table = 'telepon';
protected $primaryKey = 'id_siswa';
protected $fillable = [
'id_siswa',
'nomor_telepon',
];
public function siswa()
{
return $this->belongsTo('App\Siswa', 'id_siswa');
}
}
这是我的添加和更新数据方法:
public function store(Request $request)
{
$input = $request->all();
$validator = Validator::make($input, [
'nisn' => 'required|string|size:4|unique:siswa,nisn',
'nama_siswa' => 'required|string|max:50',
'tanggal_lahir' => 'required|date',
'jenis_kelamin' => 'required|in:L,P',
'nomor_telepon' => 'sometimes|numeric|digits_between:10,15|unique:telepon, nomor_telepon',
]);
if ($validator->fails()) {
return redirect('siswa/create')->withInput()->withErrors($validator);
}
$siswa = Siswa::create($input);
$telepon = new Telepon;
$telepon->nomor_telepon = $request->input('nomor_telepon');
$siswa->telepon()->save($telepon);
return redirect('siswa');
}
public function update($id, Request $request)
{
$siswa = Siswa::findOrFail($id);
$input = $request->all();
$validator = Validator::make($input, [
'nisn' => 'required|string|size:4|unique:siswa,nisn,' . $request->input('id'),
'nama_siswa' => 'required|string|max:50',
'tanggal_lahir' => 'required|date',
'jenis_kelamin' => 'required|in:L,P',
'nomor_telepon' => 'sometimes|numeric|digits_between:10,15|unique:telepon, nomor_telepon,' .
$request->input('id') . ',id_siswa',
]);
if ($validator->fails()) {
return redirect('siswa/' . $id . '/edit')->withInput()->withErrors($validator);
}
$siswa->update($request->all());
$telepon = $siswa->telepon;
$telepon->nomor_telepon = $request->input('nomor_telepon');
$siswa->telepon()->save($telepon);
return redirect('siswa');
}