阅读有关 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将要绑定的对象的别名。但是该对象在哪里?
谁能解释一下吗?感谢您的帮助。
我为 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) 我有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 的查询构建器编写此查询。