小编Pat*_*cke的帖子

在构建 docker 镜像时运行 shell 脚本

我有一个带有install.sh脚本的自定义包,我想在构建./install.shdocker镜像时运行它(意思是 - 放在Dockerfile 中)。我可以将它与容器一起运行,但我想要一个包含所需包(install脚本中提到的包)的图像。

我试过的:

  1. RUN /bin/sh/ -c "./install.sh"
  2. RUN ./install.sh

它错误地说 -

/bin/sh install.sh not found

或者

/bin/sh ./install.sh not found

这可能是一个重复的问题,但我没有在任何地方找到答案。任何帮助,将不胜感激。

shell docker dockerfile docker-build

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

如何使用Appium启用/禁用应用程序权限?

我的应用需要多应用许可。我需要通过允许或拒绝其他权限来检查我的应用程序的行为。如何从appium启用/禁用app权限以创建多个方案?

例如,假设我的应用需要权限:permission1permission2

scenario 1 = allow permission1 allow permission2

scenario 2 = allow permission1 deny permission2

scenario 3 = deny permission1 allow permission2

scenario 4 = deny permission1 deny permission2
Run Code Online (Sandbox Code Playgroud)

appium appium-ios appium-android

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

Laravel 按最后一条消息对对话进行排序

我有一个Conversation模型,它有很多ConversationMessage模型。

现在我想根据对话的最后一条消息对对话进行排序。基本上就像WhatsApp。如何构建查询?

作为我的代码的旁注:对话包含用户 ( user_id) 和关联的公司 ( company_id)。公司与用户有belongsToMany关系。

Conversation::whereHas('company', function ($q) use ($userId) {
    $q->whereHas('users', function ($q1) use ($userId) {
        $q1->where('users.id', $userId);
    });
})->orWhereHas('user', function($q) use ($userId) {
    $q->where('user.id', $userId);
})->with(array('conversationMessage' => function($q) {
    $q->orderBy('created_at', 'DESC');
})->get();
Run Code Online (Sandbox Code Playgroud)

这对ConversationMessage关系模型进行了排序,但对对话进行了排序。如何Conversations根据最后一条消息进行排序?

php sql laravel eloquent

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

Laravel 测试:模型工厂不会触发注册事件

我已经使用 Laravel 5.7 有一段时间了,但是,我对 TDD 完全陌生。

如果创建了用户模型,register则会触发一个事件。但是为什么当我使用工厂创建用户模型时它没有被触发?

我的工厂:

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'first_name' => $faker->name,
        'sur_name' => $faker->name,
        'phone' => $faker->phoneNumber,
        'birthday' => Carbon::now()->subYears(25)->toDateTimeString(),
        'gender' => 'm',
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});
Run Code Online (Sandbox Code Playgroud)

和我的测试,失败了:

public function test()
{

    $this->withoutExceptionHandling();

    Event::fake();
    $user = factory(User::class)->create();

    Event::assertDispatched(Registered::class);

}
Run Code Online (Sandbox Code Playgroud)

phpunit laravel

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

Laravel-5.4 多态关系返回空数组

我正在做一个 Laravel-5.4 项目。我有三个表usersarticles并且comments在我的数据库中。

articles表格截图:

文章表

comments表格截图:

评论表

Article 模型:

class Article extends Model
{
    public function comments() {
        return $this->morphMany('App\Comment', 'commentable');
    }
}
Run Code Online (Sandbox Code Playgroud)

Comment 模型:

class Comment extends Model
{
    public function commentable() {
        return $this->morphTo();
    }
}
Run Code Online (Sandbox Code Playgroud)

ArticleController 包含以下方法:

public function showComments() {
    return Article::find(1)->comments;
}
Run Code Online (Sandbox Code Playgroud)

以上showComments()方法返回[](空数组)。我想返回这篇文章的所有评论id=1。问题是什么?

laravel

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

在Laravel搜索

我有以下查询

$objects = Object::where('user_id', auth()->user()->id)
                ->where('object_name','LIKE','%'.$request->search."%")
                ->get();
Run Code Online (Sandbox Code Playgroud)

这将返回包含关键字的当前用户的所有对象.这仅搜索object_name列中的关键字.

因为我想内同时进行搜索object_nameobject_description,我增加了一个orWhere条款如下:

 $objects = Object::where('user_id', auth()->user()->id)
            ->where('object_name','LIKE','%'.$request->search."%")
            ->orWhere('object_description','LIKE','%'.$request->search."%")
            ->get();
Run Code Online (Sandbox Code Playgroud)

现在,这会返回一个包含关键字的所有对象object_nameobject_description,但它搜索整个用户群内.

我想要的是更改此查询,以便我可以在object_name或中搜索关键字object_description,但搜索范围必须限制为当前登录用户.

laravel eloquent

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

带有对象的ArrayList

我有一个ArrayList,里面填充了名为projectsCurrent的对象"Project".每个项目都有自己的名字,州,manDays等.

我想遍历这个列表和每个项目检查if (manDaysDone >= manDays).如果确实如此,那么比项目完成并且我想要更改其状态,将其从列表中删除并将其添加到另一个(projectsDone).

当我尝试使用Iterator来实现我的目标时,似乎在迭代中丢失了当前项目的链接,例如,在此代码中,NoSuchElementException在if条件中引发了一个:

Iterator<Project> i = projectsCurrent.iterator();
while (i.hasNext()){
    if (i.next().getManDaysDone() >= i.next().getManDays()){
        i.next().setState(ProjectState.DONE);
    } 
}
Run Code Online (Sandbox Code Playgroud)

只是为了弄清楚我想要实现的目标.以下for循环完成了这项工作,但当然后来我得到了ConcurrentModificationException:

for (Project currentProject : projectsCurrent){
    if (currentProject.getManDaysDone() >= currentProject.getManDays()) {
        currentProject.setState(ProjectState.DONE);
        projectsDone.add(currentProject);
        this.budget += currentProject.getPrice();
        projectsCurrent.remove(currentProject);
    }
}
Run Code Online (Sandbox Code Playgroud)

java

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