php - 无法在 laravel 8 上执行自动完成 - 未找到基表或视图:1146 表“workshop.nama_suppliers”不存在
问题描述
当我尝试在 Laravel 8 上进行自动完成时,当我在浏览器中进行检查时,错误是这样的
SQLSTATE [42S02]:未找到基表或视图:1146 表“workshop.nama_suppliers”不存在(SQL:选择.from
Supplier
where .LIKE % abcd%)namasupplier
nama_suppliers
Supplier
namasupplier
我已经进行了 php artisan migrate 并且仍然出现此错误。即使我根本没有在我的代码中键入 nama_suppliers 表,因为在我的数据库中没有名为“nama_suppliers”的表。
这是我制作的代码:
/database/migrations/2021_05_16_142836_create__supplier_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSupplierTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
if(Schema::hasTable('Supplier')) return;
Schema::create('Supplier', function (Blueprint $table) {
$table->id();
$table->string('namasupplier');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('Supplier');
}
}
应用程序/模型/NamaSupplier.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class NamaSupplier extends Model
{
use HasFactory;
protected $fillable = [
'namasupplier'
];
}
应用程序/Http/Controllers/homeController.php
public function getnamasupplier(Request $request)
{
$data = NamaSupplier::select("Supplier.namasupplier")
->where("Supplier.namasupplier","LIKE","%{$request->input('query')}%")
->get();
return response()->json($data);
}
路线/web.php
Route::get('getnamasupplier', [homeController::class, 'getnamasupplier'])->name('getnamasupplier');
资源/视图/tambah_transaksimasuk.blade.php
<div class="col-md-10 themed-grid-col">
Supplier <br>
<div class="form-floating mb-3">
<input type="text" class="nsup" name="namasupplier" value=""><br></br>
</div>
<script type="text/javascript">
var path = "{{ route('getnamasupplier') }}";
$('input.nsup').typeahead({
source: function (query, process) {
return $.get(path, { query: query }, function (data) {
return process(data);
});
}
});
</script>
</div>
注意:对于 jquery,我将其用于此刀片:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.1/bootstrap3-typeahead.min.js"></script>
你能解释一下为什么会发生这种情况,我应该怎么做?
解决方案
在您的模型中添加受保护的 $table,将您的模型更改为
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class NamaSupplier extends Model
{
use HasFactory;
protected $table = 'Supplier';
protected $fillable = [
'namasupplier'
];
}
对于下一个开发,考虑使用复数 (kata benta jamak) 作为表名和单数 (kata benta tunggal) 作为模型名
例如:对于表供应商,suppliers
用作表名(小写)并Supplier
用作模型名,如果这样做,则不需要在模型中添加受保护的 $table
推荐阅读
- node.js - Mongodb嵌套资源API
- r - 运行 weathercan 包时出错 - 致命 SSL/TLS 警报(例如握手失败))
- haskell - 为什么 Haskell 在这个例子中忽略了硬编码的 int?
- python-3.x - 合并由熊猫concat创建的重复列?
- java - Micronaut:使资源中的文件公开可用
- javascript - Javascript中的正则表达式提取和组设置如果日期之间的字符
- oracle - 从 Oracle 的字段中删除 _x005F、x_000D 和 _x000d
- java - 我是编码新手,正在尝试修复这些错误,但不知道该怎么做
- hadoop - Apache Pig 无法获取 MIN(列),意外符号
- javascript - 在对象中,如何添加仅包含整数的值?