我正在尝试查询数据库并在闭包函数中创建一个过滤器,我的模型(简体)如下所示:
Products:
id,
sale_id
Sales:
id,
provider_id
Provider:
id
Run Code Online (Sandbox Code Playgroud)
我想要来自特定提供商的所有产品,所以我构建了我的查询:
Product::with(array
('sale'=>function($query){
$query->where('provider_id', '=', 1);
})
)->get();
Run Code Online (Sandbox Code Playgroud)
问题是结果包含销售的正确产品,以及销售空的错误产品,如下所示:
[{
"id": 25,
"sale": null
},
{
"id": 26,
"sale": {
"id": 15,
"provider_id": 3
}
}]
Run Code Online (Sandbox Code Playgroud)
销售的产品:null是来自其他提供商的产品,我可以在内存中过滤它们,但我认为有一种方法可以避免查询的空结果,任何线索?
我有一个 Laravel5/angularJS 应用程序(将 Laravel 作为前端的 api 休息和角度)
在我当地的环境中,一切都像魅力一样。
但是当我上传到主机时,我只能访问索引页面,其他所有内容都会抛出 404。
在我的共享主机中,我有这样的文件系统。
public_html
laravel-backend (it has app, bootstrap, confi...etc, all laravel app)
laravel-frontend (it would be like the public folder of the laravel default file system)
.htaccess
Run Code Online (Sandbox Code Playgroud)
.htaccess 内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} anotherAppDomainAtSharedServer$ [NC]
RewriteCond %{REQUEST_URI} !/.*$
RewriteRule ^(.*)$ /$1 [L]
RewriteCond %{HTTP_HOST} laravelAppDomain$ [NC]
RewriteCond %{REQUEST_URI} !^/laravel-frontend/.*$
RewriteRule ^(.*)$ /laravel-frontend/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
laravel-frontend 中的 index.php:
require __DIR__.'/../laravel-backend/bootstrap/autoload.php';
$app = require_once __DIR__.'/../laravel-backend/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle( …Run Code Online (Sandbox Code Playgroud) 我已经用 laravel 5.2 构建了 rest api,将它与 angularJS 集成并用 jwt 保护它。
这是我第一次使用 jwt,而不是 angularjs,在我过去的项目中(使用 spring mvc/security、angularJS 和 session 代替 jwt),我可以通过使用 spring 安全拦截 url 来保护资源,如下所示:
<sec:intercept-url pattern="*/app/**" access="isAuthenticated()" />
Run Code Online (Sandbox Code Playgroud)
有没有办法用 laravel 做到这一点?,我已经做了 javascript 验证,所以如果 jwt 令牌无效,用户不能访问任何路由,只能登录,问题是 javascript 源是可用的,无论用户是登录与否。