小编ajo*_*jon的帖子

您是否可以创建新的Model实例而不将其保存到数据库中

我想在Laravel中创建一大堆模型对象实例,然后选择最佳实例并将其保存到数据库中.我知道我可以创建一个实例Model::create([]),但是可以保存到数据库中.如果可能的话,我想创建一堆模型,然后只创建一个最好的模型.

这可能吗?

我正在使用Laravel 5.0

laravel laravel-5

24
推荐指数
3
解决办法
2万
查看次数

Laravel5依赖注入模型

我有一个名为Surface的Eloquent模型,它依赖于ZipCodeRepository对象:

class Surface extends Model{
    public function __construct(ZipCodeRepositoryInterface $zipCode){...}
Run Code Online (Sandbox Code Playgroud)

和一个具有多个曲面的Address对象.

class Address extends Model{
    public surfaces() { return $this->hasMany('App/Surface'); }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我打电话时,$address->surfaces我收到以下错误:

Argument 1 passed to App\Surface::__construct() must be an instance of App\Repositories\ZipCodeRepositoryInterface, none given
Run Code Online (Sandbox Code Playgroud)

我以为IoC会自动注入它.

ioc-container laravel-5

10
推荐指数
2
解决办法
8892
查看次数

中间件中的Laravel依赖注入

我使用的是Laravel-5.0的默认Authentication中间件,但是我更改了handle函数的签名:

public function handle($request, Closure $next, AuthClientInterface $authClient)
Run Code Online (Sandbox Code Playgroud)

我还在AuthClientInterface服务提供商处注册了:

public function register()
{
    $this->app->bind('App\Services\Contracts\AuthClientInterface', function()
    {
        return new AuthClient(
            env('AUTH_SERVER_URL'),
            env('AUTH_SESSION_URL'),
            env('AUTH_CLIENT_ID')
        );
    });
}
Run Code Online (Sandbox Code Playgroud)

但是,尽管如此,我看到以下错误:

Argument 3 passed to HelioQuote\Http\Middleware\Authenticate::handle() 
must be an instance of 
HelioQuote\Services\Contracts\HelioAuthClientInterface, none given, 
called in C:\MyApp\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php on line 125 and defined...
Run Code Online (Sandbox Code Playgroud)

谁能看到我做错了什么?

编辑:我确实通过将HelioAuthClientInterface传递给中间件的构造函数来实现它.但是我认为除了构造函数之外,IoC容器还会向方法注入依赖项.

php middleware ioc-container laravel

7
推荐指数
2
解决办法
7535
查看次数

Auth在Laravel Tinker工作

从Tinker内部我想:

>>> Auth::loginUsingId(12);
=> false
>>> Auth::user();
=> null
>>> Auth::attempt(['email' => 'my@email.com']);
=> false
Run Code Online (Sandbox Code Playgroud)

我猜测,因为Auth通常使用会话数据,也许会话不适用于修补程序.

是否可以在修补程序中进行身份验证?

laravel laravel-5 laravel-5.3 tinker

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

Laravel表*没有名为*的列

我的单元测试最近开始失败.我收到此错误:

PDOException: SQLSTATE[HY000]: 
General error: 1 table loan_details has no column named start_month
Run Code Online (Sandbox Code Playgroud)

它发生的地方,我有这个代码:

$loan = LoanDetails::create(['loan_percentage' => .8,
        'loan_product_id' => 1,
        'interest_rate' => .5,
        'start_month' => 0,
        'term' => 120,
        'fixed_finance_fee' => 0,
        'variable_finance_Fee' => 0,
        'valid_from' => '2015-01-01'
    ]);
Run Code Online (Sandbox Code Playgroud)

如果我注释掉"start_month"行,那么它在逻辑上是有效的.

在我的单元测试的设置中,我运行所有迁移(大约80).

我的迁移看起来像这样:

Schema::table('loan_details', function(Blueprint $table){
     $table->integer('start_month')->unsigned()->after('interest_only')->default(0);
     $table->decimal('balloon_percent',4,3)->after('term')->nullable();
     $table->integer('balloon_month')->after('balloon_percent')->nullable();
     $table->dropColumn('ordinal_rank');
});
Run Code Online (Sandbox Code Playgroud)

所以,我想知道是否所有迁移都没有运行,所以我运行了这段代码:

$rows = DB::table('migrations')->get();
print_r($rows);
Run Code Online (Sandbox Code Playgroud)

这会将所有迁移列为已完成.我在内存中使用sqlite db进行测试.

我想知道迁移是否是异步运行的,并且在我的代码运行时它们都没有完成?或者,如果迁移在某处静默失败?

我已经在这几个小时了,不知道发生了什么.

*更新我有一个在上述迁移后运行的迁移,我确认后续迁移成功.因此,正是这一次迁移以某种方式无声地失败.

php sqlite database-migration laravel

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

Java Toolkit屏幕分辨率的删除

我正在使用java来获取屏幕的尺寸和分辨率.当我运行以下代码时,我得到下面的输出.

Toolkit toolkit =  Toolkit.getDefaultToolkit ();
Dimension dim = toolkit.getScreenSize();
System.out.println("Width of Screen Size is "+dim.width+" pixels");
System.out.println("Height of Screen Size is "+dim.height+" pixels");       
int resolution =Toolkit.getDefaultToolkit().getScreenResolution();
System.out.println(resolution);
Run Code Online (Sandbox Code Playgroud)

输出:

Width of Screen Size is 1920 pixels
Height of Screen Size is 1080 pixels
120
Run Code Online (Sandbox Code Playgroud)

现在Javadoc说getScreenResolution以dpi(每英寸点数)返回分辨率.我认为这意味着如果我的图像宽度为600像素,那么屏幕上的图像将为5英寸.当我测量时,它实际上是4英寸宽.告诉我它应该是150 dpi.

我的显示器是一个15.6英寸的显示器,我测量它的宽度为13.6英寸,高度超过7.6英寸.现在我的屏幕宽度显然是1920像素宽,计算到每英寸约141像素.同样1080/7.6计算至每英寸约141个像素.

此网页显示600x600像素的图像.我在屏幕上测量它为4.25",计算到141像素.

为什么getScreenResolution返回120?

如果我误解了这一点,请告诉我.

java awt screen-resolution

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

拉取请求的默认分支

我的公司使用github。当我要执行拉取请求时,我需要将我的PR从我的货叉到主存储库转移到暂存分支。默认情况下,我的PR指向master分支,因此对于每个请求请求,我都必须更改要合并到的分支。我知道您可以在github中设置默认分支。我希望默认分支保持为主状态,但是我希望我的拉取请求默认指向暂存。那可能吗?

在下面的图片,我不希望有改变base: master,以base: staging每次。最大的痛苦是当我忘记将其更改为分期时。 在此处输入图片说明

github

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

使用多对多表MySQL进行过滤

我有以下表格(为简单起见,省略了其他表格).1代表所有人,2代表那些人玩的运动.我使用PHP来允许用户查看人员列表.他们可以根据一个人的名字或他们玩的运动来过滤.所以,我希望能够看到所有玩棒球和足球的人.

create table people (
  id int,
  name varchar(50)
  );

create table people_to_sports (
  personID int,
  sportID int,
  primary key(personID,sportID)
  );
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是,我如何使用people_to_sports来获取所有参加运动1和运动2的人的列表?

这里有一个sqlfiddle .

谢谢!

mysql sql filter

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

检查芹菜工人的状态

我有一个使用 Celery 的项目。我定期遇到这样一种情况,我的请求正在向 Celery 发送,但任务没有交给工作人员,而服务器只是返回 500 错误。

当我重新启动 Celery 时,它又开始工作了。我只是猜测工人正在挂起,这使得它不再有可用的工人。如果我启动另一批工作人员,请求将再次开始工作(这支持我的理论)。

问题:

  1. 我理解芹菜默认记录到标准错误。我没有看到任何错误,所以我希望某处有另一个芹菜日志。那会在哪里?
  2. 有没有办法查询工人的状态?它们可用吗?他们挂了吗?
  3. 还能是别的吗?

celery

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

Google客户端无效的JWT:令牌必须是短期令牌

我正在使用Google的php api客户端。我正在浏览服务帐户快速入门指南。据我所知,我完美地遵循了这些步骤。我遇到以下错误:

{
   "error": "invalid_grant",
   "error_description": "Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values and use a clock with skew to account for clock differences between systems."
}
Run Code Online (Sandbox Code Playgroud)

据我了解,此错误最常见的问题是系统时间是否错误。我已经三重检查了我的时区,日期和时间是否与原子钟同步。我使用php set timezone函数来设置我的时区以匹配我的计算机,但是我继续遇到错误。我正在查看消息的另一部分,其中提到了iat和exp设置,但还没有到位。

有谁对我如何超越这个有任何想法?

php google-api google-api-php-client

3
推荐指数
4
解决办法
6514
查看次数

使用 MigLayout 的 JPanel 上的边距

我创建了一个OptionDialog没有任何按钮的项目,并JPanel在其中放入了一个用于MigLayout其布局的项目。那里面JPanel还有另一个。JPanel

这两个面板的外侧似乎都有边距。也许它是容器上的填充物。不管怎样,我想要一种摆脱它们的方法。

我怎样才能摆脱这些边距?在图片中,它们是 JPanel 周围的灰色和深橙色边框。

J面板

这是面板代码:

setBackground(new Color(239,209,59));
setLayout(new MigLayout("wrap 1"));
JLabel title = new JLabel("Enroll Today!", JLabel.CENTER);
Font f = title.getFont().deriveFont((float)36);
title.setFont(f);
add(title);
JPanel docsPanel = new JPanel();
docsPanel.setBorder(BorderFactory.createEmptyBorder());
docsPanel.setLayout(new MigLayout("wrap 1", "", "[grow,fill]"));
docsPanel.setBackground(new Color(255,235,115));
for (final Document d : docs){
    JButton doc = new JButton("* "+d.getName());
    doc.setFont(f.deriveFont((float)24));
    doc.setBorder(null);
    doc.setContentAreaFilled(false);
docsPanel.add(doc);
}
add(docsPanel);
Run Code Online (Sandbox Code Playgroud)

这是选项对话框代码:

DocumentPanel panel = new DocumentPanel(controller.getDocuments());
JOptionPane.showOptionDialog(null, panel, "Enroll now!", JOptionPane.DEFAULT_OPTION, 
                             JOptionPane.PLAIN_MESSAGE, null, new Object[] {}, …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel miglayout

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

MySQL仅在条件为真时插入

我有几个插入语句,我只想在它们为真时执行。

这是我的例子:

START TRANSACTION;

INSERT INTO fields (field_name, control_type_id, needs_approval)
VALUES 
('Array Photos', 3, 0);

INSERT INTO field_to_job_type (field_id, job_type_id, sequence_number, parent_id)
VALUES
(last_insert_id(), (SELECT job_type_id FROM job_types WHERE job_type_name = 'Cash'), 1, (SELECT field_id FROM fields where field_name = 'Photo Pack'));

COMMIT;
Run Code Online (Sandbox Code Playgroud)

现在,如果此查询只有 1 个结果,我真的只想运行第二个查询:

SELECT job_type_id FROM job_types WHERE job_type_name = 'Cash'.

如果该查询返回 2 个结果,我想放弃交易。

那可能吗?我试过的东西:

START TRANSACTION;
INSERT ...;
INSERT ...;
IF(SELECT count(job_type_name) FROM job_types WHERE job_type_name = 'Cash') = 1, 'COMMIT', 'ROLLBACK');
Run Code Online (Sandbox Code Playgroud)

哪个,显然没有用。

mysql transactions

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

Laravel 5.0 whereRaw concat 类似

我正在使用 Laravel 5.0。

我有这个:

return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%?%'", ['test'])->get();
Run Code Online (Sandbox Code Playgroud)

它返回了[]

当我将其更改为:

return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%test%'")->get();
Run Code Online (Sandbox Code Playgroud)

它返回一个包含 3 个用户的数组。

我在查询之前添加了这个:

\DB::listen(function($sql, $bindings) {
    var_dump($sql);
    var_dump($bindings);
});
Run Code Online (Sandbox Code Playgroud)

我得到:

string(73) "select * from `users` where CONCAT(first_name, ' ', last_name) LIKE '%?%'"
array(1) {
  [0]=>
  string(4) "test"
}
Run Code Online (Sandbox Code Playgroud)

我不明白我做错了什么。

query-builder laravel-5

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