У меня установлена Laravel 5.6 и настроена множественная аутентификация.
Все работает, за исключением того, что когда я захожу в функцию показа ресурсов, eloquent не получает запись. Просто возвращаю ноль.
У меня есть поиск в Google в течение 2 дней, и я просто не могу понять.
Код следующий.
web.php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/user/logout','Auth\LoginController@userLogout')->name('user.logout');
//admin route for our multi-auth system
Route::prefix('admin')->name('admin.')->group(function () {
Route::get('/', 'AdminController@index')->name('dashboard');
Route::get('/login', 'Auth\AdminLoginController@showLoginForm')->name('login');
Route::post('/login', 'Auth\AdminLoginController@login')->name('login.submit');
Route::get('/logout','Auth\AdminLoginController@logout')->name('logout');
//admin password reset routes
Route::post('/password/email','Auth\AdminForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('/password/reset','Auth\AdminForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('/password/reset','Auth\AdminResetPasswordController@reset');
Route::get('/password/reset/{token}','Auth\AdminResetPasswordController@showResetForm')->name('password.reset');
});
Route::resource('/admin/stock_categories','Admin\Stock\CategoryController');
Ресурс, с которым я работаю, это stock_categories выше.
Мои маршруты: список выглядит следующим образом.
| | POST | admin/stock_categories | stock_categories.store | App\Http\Controllers\Admin\Stock\CategoryController@store | web,auth:admin |
| | GET|HEAD | admin/stock_categories | stock_categories.index | App\Http\Controllers\Admin\Stock\CategoryController@index | web,auth:admin |
| | GET|HEAD | admin/stock_categories/create | stock_categories.create | App\Http\Controllers\Admin\Stock\CategoryController@create | web,auth:admin |
| | GET|HEAD | admin/stock_categories/{stock_category} | stock_categories.show | App\Http\Controllers\Admin\Stock\CategoryController@show | web,auth:admin |
| | PUT|PATCH | admin/stock_categories/{stock_category} | stock_categories.update | App\Http\Controllers\Admin\Stock\CategoryController@update | web,auth:admin |
| | DELETE | admin/stock_categories/{stock_category} | stock_categories.destroy | App\Http\Controllers\Admin\Stock\CategoryController@destroy | web,auth:admin |
| | GET|HEAD | admin/stock_categories/{stock_category}/edit | stock_categories.edit | App\Http\Controllers\Admin\Stock\CategoryController@edit | web,auth:admin
Когда я показываю список, он отображается правильно.
Но когда я нажимаю на элемент и открываю URL
/admin/stock_categories/1
Возвращает пустой результат. Я не показываю предмет.
Код моей модели выглядит следующим образом.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
class Category extends Model
{
use Notifiable;
protected $table = 'stock_categories';
//protected $fillable = ['name, discount'];
//
function items() {
return $this->hasMany('App\Item','category_id');
}
}
Мой контроллер имеет следующий код.
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:admin');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$category = Category::where('master_category_id',0)->orderBy('name')->paginate(20);
$master_category_id = 0;
return view('admin.stock.top_list',compact('category','master_category_id'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Category $category
* @return \Illuminate\Http\Response
*/
public function show(Category $category)
{
return view('admin.stock.category',compact('category'));
}
Когда я var_dump ($ category) внутри функции show, я получаю это.
object(App\Category)#755 (26) {
["table":protected]=>
string(16) "stock_categories"
["connection":protected]=>
NULL
["primaryKey":protected]=>
string(2) "id"
["keyType":protected]=>
string(3) "int"
["incrementing"]=>
bool(true)
["with":protected]=>
array(0) {
}
["withCount":protected]=>
array(0) {
}
["perPage":protected]=>
int(15)
["exists"]=>
bool(false)
["wasRecentlyCreated"]=>
bool(false)
["attributes":protected]=>
array(0) {
}
["original":protected]=>
array(0) {
}
["changes":protected]=>
array(0) {
}
["casts":protected]=>
array(0) {
}
["dates":protected]=>
array(0) {
}
["dateFormat":protected]=>
NULL
["appends":protected]=>
array(0) {
}
["dispatchesEvents":protected]=>
array(0) {
}
["observables":protected]=>
array(0) {
}
["relations":protected]=>
array(0) {
}
["touches":protected]=>
array(0) {
}
["timestamps"]=>
bool(true)
["hidden":protected]=>
array(0) {
}
["visible":protected]=>
array(0) {
}
["fillable":protected]=>
array(0) {
}
["guarded":protected]=>
array(1) {
[0]=>
string(1) "*"
}
}
Мое промежуточное ПО выглядит так.
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
}
Я надеюсь, что я совершил нечто глупое, и за свою жизнь я не могу найти.
Таким образом, чтобы подвести итог, я нажимаю на элемент, загружаю маршрут показа ресурса, но элемент не извлекается из базы данных.
Любая помощь с благодарностью.
Спасибо