小编Nam*_*hek的帖子

Laravel 5 - 如何使用 $this->app->when()

阅读有关 Laravel绑定的内容,我明白了$this->app->bind$this->app->singleton因为$this->app->instance它们几乎是相同的。

$this->app->when对我来说有点棘手。

在 Laravel 示例中

$this->app->when('App\Http\Controllers\UserController')
          ->needs('$variableName')
          ->give($value);
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它注入了一些原始值,并且是App\Http\Controllers\UserController将要绑定的对象的别名。但是该对象在哪里?

谁能解释一下吗?感谢您的帮助。

php laravel laravel-5.4

6
推荐指数
2
解决办法
3916
查看次数

laravel authorizeResource 总是拒绝访问

我为 API 端点创建了一个资源控制器。我还为模型创建了相应的策略。

如果我使用每个方法进行授权检查

$this->authorize('delete', $asset);
Run Code Online (Sandbox Code Playgroud)

然后它按预期工作。但是如果我将以下内容添加到构造中,我总是会收到 403 禁止。不确定我缺少什么,因为以下内容应适用于所有方法的授权。

$this->authorizeResource(Asset::class, 'asset');
Run Code Online (Sandbox Code Playgroud)

这是我的路线:

Route::group(['middleware' => ['auth:api']], function () {
    Route::Resource('asset', 'AssetsApiController');
});
Run Code Online (Sandbox Code Playgroud)

我的政策是这样注册的:

protected $policies = [
    Asset::class => AssetPolicy::class,
];
Run Code Online (Sandbox Code Playgroud)

我的删除策略方法是

public function delete(User $user, Asset $asset)
{
    return true;
}
Run Code Online (Sandbox Code Playgroud)

API 控制器构造函数如下所示:

public function __construct()
{
    $this->authorizeResource(Asset::class,'asset');
}
Run Code Online (Sandbox Code Playgroud)

API控制器方法是

public function destroy($assetID)
{
    $asset = Asset::findOrFail($assetID);
    $asset->delete();
}
Run Code Online (Sandbox Code Playgroud)

我的路线是

| GET|HEAD  | api/asset              | asset.index   | App\Http\Controllers\AssetsApiController@index   | api,auth:api                      |
| POST      | api/asset              | asset.store   | App\Http\Controllers\AssetsApiController@store   | …
Run Code Online (Sandbox Code Playgroud)

php laravel-middleware laravel-nova laravel-5.8

5
推荐指数
1
解决办法
5297
查看次数

Laravel 查询中的 union 和 join

我有3张桌子

  1. 发送给员工
  2. 处理中
  3. 雇员

我想将两个表send_to_employees和进行并集onprocess。之后我想将结果与employees表格连接起来。

我已经在原始 SQL 查询中完成了它,如下所示:

SELECT * 
FROM (
  SELECT
    send_to_employees.caseid,
    send_to_employees.docs,
    send_to_employees.helper,
    send_to_employees.employee_id 
  FROM send_to_employees
  UNION
  SELECT
    onprocess.caseid, 
    onprocess.docs, 
    onprocess.helper, 
    onprocess.employee_id
  FROM onprocess
) t1 
INNER JOIN employees 
  ON employees.employee_id = t1.employee_id
Run Code Online (Sandbox Code Playgroud)

但我不知道如何用 Laravel 做到这一点。请帮助我使用 Laravel 5.8 的查询构建器编写此查询。

laravel laravel-query-builder laravel-5.8

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