标签: laravel-6

Laravel:如何获取所有具有特定角色的用户?

我有三个角色:1. Admin2. Client3.Store

我有三张表:1. users2. roles3.role_user

我怎样才能获得所有拥有该角色的用户Client

我试过这个

$clients = User::roles()->where('App\Models\Role',Role::CLIENT)->get();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

不应静态调用非静态方法 App\Models\User::roles()

好榜样

class Role extends Model
{
    public const ADMIN = 'Admin';
    public const CLIENT = 'Client';
    public const STORE = 'Store';

    public function users()
    {
        return $this->belongsToMany('App\Models\User')->using('App\Models\UserRole');
    }
}
Run Code Online (Sandbox Code Playgroud)

用户模型

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name',
        'first_name',
        'last_name',
        'email',
        'password',
        'activated',
        'token',
        'signup_ip_address',
        'signup_confirmation_ip_address',
        'signup_sm_ip_address',
        'admin_ip_address',
        'updated_ip_address',
        'deleted_ip_address',
    ];

    protected $hidden = …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-6

0
推荐指数
1
解决办法
1247
查看次数

尝试查看页面时出错,出现以下错误:Action Facade\Ignition\Http\Controllers\ShareReportController 未定义

尝试访问路线时出现以下错误,但需要控制器来加载数据:

(1/1) InvalidArgumentException
Action Facade\Ignition\Http\Controllers\ShareReportController not defined.
Run Code Online (Sandbox Code Playgroud)

我正在使用 Tenancy/Multi-Tenant 包,并将其配置为使用 paths/tenants.php 专门为租户加载路由。如果我在租户.php 文件中执行以下操作,它将返回正确的响应。

Route::get('/test', function() {
    return 'Test success';
});
Run Code Online (Sandbox Code Playgroud)

虽然当我尝试做同样的事情时,但从控制器加载数据,如下所示:

Route::get('/testt', 'TenantController@testt');
Run Code Online (Sandbox Code Playgroud)

它将显示错误:

(1/1) InvalidArgumentException
Action Facade\Ignition\Http\Controllers\ShareReportController not defined.
Run Code Online (Sandbox Code Playgroud)

如果我尝试将相同的代码放入 web.php 路由中,那么它可以完美运行。可能是什么问题呢?我的代码中有什么东西吗?可能是因为我使用的多租户包的原因吗?我将如何进一步调试这个?

multi-tenant laravel laravel-6

0
推荐指数
1
解决办法
2万
查看次数

调用 Laravel 中未定义的函数 App\Http\Controllers\categories()

请我需要帮助,我正在 Laravel 中进行一个项目,当 T 尝试在多对多中使用数据透视表时遇到问题

在我的category model Category.php,我有下面的功能

public function users()
{
    return $this->belongsToMany(user::class);
}
Run Code Online (Sandbox Code Playgroud)

在我的user model User.php,我有下面的功能

public function authors()
{
    return $this->belongsToMany(author::class);
}
Run Code Online (Sandbox Code Playgroud)

web.php,我有这个

Route::post('/onboarding', 'OnboardsController@categoryUser');
Run Code Online (Sandbox Code Playgroud)

在 my 中onboarding view,我有一个表格:

   <form action="{{ url('/onboarding') }}" method="POST">
    @csrf
      @foreach($categories as $category)
        <div class="radio-item">
        <input class="form control" name="category_id" type="checkbox" id="category_id" required>
          <label for="name">{{ $category -> title }}</label>
        </div>
        @endforeach

        <div class="form-row">
          <div class="form-group col-md-12 text-center">
            <button type="submit">Proceed to Authors</button>
          </div>
        </div>
      </form>
Run Code Online (Sandbox Code Playgroud)

在我的 …

php laravel laravel-6

0
推荐指数
1
解决办法
1万
查看次数

Laravel 6 的公共文件夹中不存在 CSS 和 JS 文件夹

我刚刚安装了 Laravel 6.0.2。然后我使用以下命令创建了身份验证。

composer require laravel/ui
php artisan ui:auth
Run Code Online (Sandbox Code Playgroud)

现在,我运行登录页面,它显示如下。

在此处输入图片说明

现在我正在设置Layouts.php文件。

<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<script src="{{ asset('js/app.js') }}" defer></script>
Run Code Online (Sandbox Code Playgroud)

我也试过这个。

<link href="{{ asset('public/css/app.css') }}" rel="stylesheet">
<script src="{{ asset('public/js/app.js') }}" defer></script>
Run Code Online (Sandbox Code Playgroud)

在 Laravel 6 之前,CSS 和 JS 的文件夹存在于 public 文件夹中,但现在我找不到那个文件夹。谁能告诉我{{ asset('css/app.css') }}这个asset在 Laravel 6 中的位置是什么?

laravel laravel-6

0
推荐指数
1
解决办法
2849
查看次数

可以在没有登录用户的情况下使用门授权

是否有可能在不使用用户身份验证服务的情况下使用 Gate 授权?

例如我想定义一个门:

Gate::define('morning', function(){
    return date('H') < 12;
});
Run Code Online (Sandbox Code Playgroud)

当我这样做Gate::allows('morning')或在控制器$this->authorize('morning')中时总是返回 false,因为没有用户登录。

我怎样才能使这项工作仅适用于来宾用户?

php laravel php-7 laravel-6

0
推荐指数
1
解决办法
605
查看次数

将数据从登录控制器传递到 laravel 中的 login.blade.php

我试图将数据从登录控制器传递到 laravel 6 中的 login.blade.php ,就像我在整个应用程序中使用通用标头一样,所以我必须创建动态标题和描述。默认登录控制器是这样的

class LoginController extends Controller
{

 protected $redirectTo = RouteServiceProvider::HOME;


public function __construct()
{
    $this->middleware('guest')->except('logout');
}
}
Run Code Online (Sandbox Code Playgroud)

不知道怎么通过。请帮忙

php laravel laravel-6

0
推荐指数
1
解决办法
1681
查看次数

Laravel 视图不显示数据

我正在尝试将数据传递给 laravel 刀片并显示它。显然我错过了一些非常基本的东西。如果我使用 laravel format {{ $test_message }},它不会显示该值。如果我使用<?php echo $test_message ; ?>. 这是工作。来自我的控制器的代码 -

$data = ['message' => 'This is a test!'];
return view('test')->with([ 'test_message' => $data['message'] ]);    
Run Code Online (Sandbox Code Playgroud)

看法

    <html lang="en-US">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
    <p> <?php echo  $test_message ; ?> </p>
    <p> {{ $test_message }}  </p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在输出中,我有“这是一个测试!” php 回显部分和 {{$test_message}} 下一行。

laravel laravel-6

0
推荐指数
1
解决办法
74
查看次数

即使我正在注册 Laravel 6.x,也找不到命令

所以考虑一下服务提供商,是的,我知道我在两个地方注册了这个命令,但请给我一点时间来解释:

<?php

namespace App\Modules\Core\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Foundation\AliasLoader;
use App\Modules\Core\Handlers\RedirectHandler;
use App\Modules\Core\Console\Commands\CreateAdminUser;
use App\Modules\Core\Values\IsMedicalRecordEmpty;

class CoreProvider extends ServiceProvider
{

    protected $commands = [
        CreateAdminUser::class,
    ];

    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(RedirectHandler::class, function($app) {
            return new RedirectHandler();
        });

        $this->app->bind(IsMedicalRecordEmpty::class, function($app) {
            return new IsMedicalRecordEmpty();
        });
    }

    public function register() {
        $this->commands($this->commands);
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        if ($this->app->runningInConsole()) {
            $this->commands([
                CreateAdminUser::class,
            ]); …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-6

0
推荐指数
1
解决办法
204
查看次数

Laravel (v6.x) addSelect() 总是为子查询字段返回空值

我有这个雄辩的查询:

$users = User::query()
            ->addSelect([
                'latest_login' => Login::select('login_time')
                ->where('logins.user_id', 'users.id')
                ->latest('login_time')
                ->take(1)
            ])
            ->orderBy('latest_login', 'DESC')
            ->get();
Run Code Online (Sandbox Code Playgroud)

问题是“latest_login”字段始终为空。

但是,如果我在 mysql 中运行查询,该字段将被完全填充:

'SELECT `users`.*, (SELECT `login_time` FROM `logins` WHERE `user_id` = users.id AND `login_time` IS NOT NULL ORDER BY `login_time` DESC LIMIT 1) AS `last_login` FROM `users` WHERE `logged_in` > 0 ORDER BY `last_login` DESC
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 DB::select() 在 Laravel 中运行原始查询,并且该字段也返回 null。

有什么想法吗?

mysql laravel eloquent laravel-6

0
推荐指数
1
解决办法
844
查看次数

在 Laravel 的 __construct 中添加中间件到控制器

我试图根据Laravel 文档在控制器的 __construct 中分配一个中间件,但它会引发以下错误:

BadMethodCallException
Method App\Http\Controllers\MyController::middlware does not exist.
Run Code Online (Sandbox Code Playgroud)

这是我的控制器类:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class MyController extends Controller
{

    public function __construct()
    {
        $this->middleware('myauth');
    }

    /** something */
    public function index()
    {
        return view('test.hi', ['name' => 'Moh']);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是中间件代码:

<?php

namespace App\Http\Middleware;

use Closure;

class myauth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        echo …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-middleware laravel-6

-1
推荐指数
1
解决办法
8250
查看次数

php artisan make auth 未在 Laravel 6 中定义

这是我做的第一件事

php artisan make:auth
Run Code Online (Sandbox Code Playgroud)

结果:

  Command "make:auth" is not defined.

  Did you mean one of these?
      make:channel
      make:command
      make:controller
      make:event
      make:exception
      make:factory
      make:job
      make:listener
      make:mail
      make:middleware
      make:migration
      make:model
      make:notification
      make:observer
      make:policy
      make:provider
      make:request
      make:resource
      make:rule
      make:seeder
      make:test
Run Code Online (Sandbox Code Playgroud)
  1. 第二个:

    php artisan ui vue --auth php artisan ui react --auth

我试过这个,这是结果

The "http://repo.packagist.org/p/provider-2015%24e84cdb7b9b7175f18a814c1783741a3ba6b021c4a78701285cc5639d0d1ee4e6.json"
Run Code Online (Sandbox Code Playgroud)

文件无法下载:无法打开流:HTTP 请求失败!

http://repo.packagist.org could not be fully loaded, package information was loaded from the local cache and may be out of date
Run Code Online (Sandbox Code Playgroud)

我该怎么办?-谢谢

php laravel laravel-6

-1
推荐指数
1
解决办法
1182
查看次数

Laravel 6 上的 Doctrine 安装失败

我对 Laravel 和学说完全陌生,一开始我选择 Laravel 6 并阅读了一些教程。正如我所见,将 Doctrine 与 Laravel 一起使用会更好,然后我尝试将 Doctrine 安装到我的项目中,但不幸的是,它失败了。

是不是因为 Laravel 6 是新的并且还不支持 Doctrine?或者我做错了什么?

我在作曲家上试过这个命令

composer require "laravel-doctrine/orm:1.3.*"
Run Code Online (Sandbox Code Playgroud)

它给了我一些错误,例如

在此处输入图片说明

然后,我尝试遵循 6.x 版的 Laravel 文档,并在数据库部分发现它提到在修改列之前安装学说/dbal

在修改一个列之前,一定要添加到你的 composer.json 文件中的 dotric/dbal 依赖。Doctrine DBAL 库用于确定列的当前状态并创建对列进行指定调整所需的 SQL 查询:

作曲家需要学说/dbal

但是,这个命令也会导致我出现同样的错误。

请指导我走正确的道路。谢谢你。

php doctrine doctrine-orm laravel laravel-6

-2
推荐指数
1
解决办法
646
查看次数