他的背包 Laravel 和 SQL 服务器有问题

Backpack Laravel issues with his and SQL Server

我是 Laravel 的新手,根据我与 iis 和 sql 服务器的连接,我遇到了几个问题。

首先,我在从 CrudTable 中删除时遇到 405 错误。我想这是一个 iis 错误,但我想在这里问一下,以防有人知道如何解决这个问题。

我遇到的另一个问题是我无法在一对多的关系中显示值而不是外国的 id table。

我得到一个空列,在创建 blade 时,我 select 一个特定值,系统在该列上插入一个零。

下面你可以看到我的代码。

table book_code
{
code varchar(15) PK,
title varchar(50)
}

bookcodes 型号

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Backpack\CRUD\CrudTrait;

class bookcodes extends Model
{
   use CrudTrait;

   protected $table = 'book_codes';
   protected $primaryKey = 'code';
   protected $fillable = ['title'];

   public function rest_declaration()
   {
       return $this->hasMany('App\Models\rest_declaration');
   }
}

bookcodes 控制器什么都没有

table rest_declaration
{
id int,
date1 date,
date2 date,
code //the foreign of bookcodes
}

rest_declaration 型号

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Backpack\CRUD\CrudTrait;
use DB;

class rest_declaration extends Model
{
   use CrudTrait;

   protected $table = 'rest_declaration';
   protected $primaryKey = 'aa'; //is my id
   protected $fillable = ['aa', 'code', 'date1', 'date2'];

   public function bookcodes()
   {
       return $this->belongsTo('App\Models\bookcodes');
   }
}

rest_declaration 控制器

<?php

namespace App\Http\Controllers\Admin;

use Backpack\CRUD\app\Http\Controllers\CrudController;

// VALIDATION: change the requests to match your own file names if you need form validation
use App\Http\Requests\rest_declarationRequest as StoreRequest;
use App\Http\Requests\rest_declarationRequest as UpdateRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class rest_declarationCrudController extends CrudController
{
   public function setup()
   {
               parent::__construct();

       /*
       |--------------------------------------------------------------------------
       | BASIC CRUD INFORMATION
       |--------------------------------------------------------------------------
       */
       $this->crud->setModel('App\Models\rest_declaration');
       $this->crud->setRoute(config('backpack.base.route_prefix') . '/restdeclaration');
       $this->crud->setEntityNameStrings('rest declaration', 'rest declaration');
       $this->crud->setDefaultPageLength(10);
       $this->crud->allowAccess('show');
       $this->crud->addClause('where', 'code', '=', Auth::user()->name );

       $this->crud->allowAccess('details_row');
       $this->crud->enableAjaxTable();
       $this->crud->enableExportButtons();

       //Fields for Create and Edit Forms
       $this->crud->addField([    // SELECT
           'label'                     => 'AA',
           'type'                      => 'text',
           'name'                      => 'aa1',
           'value'                     => $this->getmaxaa(),
           'attributes'                =>
                           ['disabled' => 'disabled',],
       ]);
       $this->crud->addField([    // SELECT
           'label'                     => 'AA',
           'type'                      => 'hidden',
           'name'                      => 'aa',
           'value'                     => $this->getmaxaa(),
       ]);

       $this->crud->addField([    // SELECT
           'label'                     => 'BookCode',
           //'type'                      => 'select',
           'name'                      => 'code',
           'entity'                    => 'bookcodes',
           'attribute'                 => 'title',
           'model'                     => 'App\Models\bookcodes',
       ]);

       $this->crud->addField([   // Date
           'name'                      => 'date1',
           'label'                     => 'From',
           'type'                      => 'date_picker',
           // optional:
           'date_picker_options'       => [
                       'todayBtn'      => false,
                       'format'        => 'dd-mm-yyyy',
                       'language'      => 'en',
                       'autoclose'     => true,
                       'showOnFocus'   => false,
           ],
       ]);

       $this->crud->addField([   // Date
           'name'                      => 'date2',
           'label'                     => 'To',
           'type'                      => 'date_picker',
           // optional:
           'date_picker_options'       => [
                       'todayBtn'      => false,
                       'format'        => 'dd-mm-yyyy',
                       'language'      => 'en',
                       'autoclose'     => true,
                       'showOnFocus'   => true,
           ],
       ]);

       $this->crud->addColumn([
           'label'                     => 'Άδεια',
           'type'                      => 'select',
           'name'                      => 'code',
           'entity'                    => 'bookcodes',
           'attribute'                 => 'title',
           'model'                     => 'App\Models\bookcodes',
       ]);

       $this->crud->addColumn([
               'name'                  => 'date1',
               'label'                 => 'From',
               'type'                  => 'date',
               'date_picker_options'   => [
               'todayBtn'              => false,
               'format'                => 'dd-mm-yyyy',
               'language'              => 'en',],
           ]);

       $this->crud->addColumn([
               'name'                  => 'date2',
               'label'                 => 'To',
               'type'                  => 'date',
               'date_picker_options'   => [
               'todayBtn'              => false,
               'format'                => 'dd-mm-yyyy',
               'language'              => 'en',],
           ]);
   }

   public function store(StoreRequest $request)
   {
       $redirect_location = parent::storeCrud($request);
       return $redirect_location;
   }

   public function update(UpdateRequest $request)
   {
       $redirect_location = parent::updateCrud($request);
       return $redirect_location;
   }

   public function getmaxaa()
   {
       $max = 'App\Models\AitisiAdeias'::max('aa');
       $max = $max + 1;
       return $max;
   }

}

我做错了什么?

你能帮帮我吗??

for 405 error 我认为你使用了错误的路由类型,你正在发送 post 请求但路由声明为 get.try Route::any 看看它是否解决了问题!

第二期你的命名空间不正确

尝试'App\rest_declaration'

我根据删除功能的问题找到了解决方案。

我没有使用任何 Route:: 等。问题是我的 iis。我在 IIS 的 Handler Mapping 中创建了一个新地图,并选择了用于我的应用程序的 PHP 版本。然后我在第三个选项卡中选择了所有动词和脚本值。

而且......瞧......现在删除就像一个魅力!

关系问题依然存在。 我意识到更改以下内容:

$this->crud->addColumn([
           'label'                     => 'BookCode',
           'type'                      => 'select',
           'name'                      => 'code',
           'entity'                    => 'bookcodes',
           'attribute'                 => 'title',
           'model'                     => 'App\Models\bookcodes',
       ]);

$this->crud->addColumn([
           'label'                     => 'BookCode',
           'type'                      => 'select2',
           'name'                      => 'code',
           'entity'                    => 'bookcodes',
           'attribute'                 => 'title',
           'model'                     => 'App\Models\bookcodes',
       ]);

我正在获取代码,不再是空列。但我仍然需要获得标题而不是代码。

任何帮助将不胜感激!

在您的模型中,您还需要传递连接列

public function bookcodes()
{
    return $this->belongsTo('App\Models\bookcodes', 'code');
}