小编Wai*_*ein的帖子

使用 Laravel 查询构建器方法 whereIn() 与子查询

我正在使用 Laravel 5.3 开发 Web 应用程序。我现在遇到了 Laravel 查询构建器方法 whereIn 的问题。这是我的场景:

我有这样的桌子。

student - id, name, dob
course - id, code
student_course -  student_id, course_id
Run Code Online (Sandbox Code Playgroud)

我想要做的是让学生通过 student_course 表的 course_id 搜索而不加入任何表。在手动查询中,我喜欢这样。

SELECT * FROM `student` WHERE `student`.`id` IN (SELECT `student_id` FROM `student_course` WHRE `course_id`= ?) 
Run Code Online (Sandbox Code Playgroud)

所以现在当我尝试将它转换为 Laravel 查询构建器时,我遇到了问题。这是我的代码:

DB::table('student')->whereIn('id',[ "Here I want to run sub query" ])->get();
Run Code Online (Sandbox Code Playgroud)

正如您在 whereIn() 的第二个参数中所见,我遇到了问题。在这种情况下,我是否需要运行原始查询?如何将原始查询作为第二个参数运行?如果不是,我怎样才能在像上面这样的一个查询中按 course_id 过滤而不加入任何表?

mysql where-in laravel laravel-query-builder

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

如何在 ASP.NET 实体框架中设置删除级联以实现自引用外键

我正在开发一个 ASP.NET MVC 项目。我正在使用实体框架代码优先方法与数据库交互。但我在为实体的自引用外键设置级联删除时遇到问题。

这是我的带有自引用外键的实体类

public class Category
    {
        public int Id { get; set; }
        [Required]
        [MaxLength(50)]
        public string Name { get; set; }
        [MaxLength(55)]
        public string MmName { get; set; }
        public int? ParentId { get; set; }

        [ForeignKey("ParentId")]
        public virtual Category ParentCategory { get; set; }
        public virtual ICollection<Category> Categories { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的背景

public class StoreContext : DbContext
    {
        public StoreContext():base("DefaultConnection")
        {

        }

        public DbSet<Category> Categories { get; set; }

        protected override void OnModelCreating(DbModelBuilder …
Run Code Online (Sandbox Code Playgroud)

asp.net entity-framework foreign-keys ef-code-first entity-framework-migrations

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

使用Android中的自定义视图匹配快餐栏中ImageView宽度的父项不起作用

我正在开发一款Android应用.在我的应用程序中,我使用自定义视图的快餐栏.我的自定义视图只有子视图.这是一个图像视图.用小吃店显示自定义视图是可以的.但问题是在小吃店中调整ImageView的大小.我想将它设置为匹配父项.但宽度与小吃店的宽度不匹配.请参阅下面的方案.

这是我的小吃店的自定义视图布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:scaleType="centerCrop"
        android:id="@+id/snackbar_ad_image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这就是我在活动中展示小吃店的方式

 private void showSnackbarAd(View view,Ad ad)
    {
        final Snackbar snackbar = Snackbar.make(view,"",Snackbar.LENGTH_LONG);
        Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout)snackbar.getView();
        TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
        textView.setVisibility(View.INVISIBLE);
        View snackView = getLayoutInflater().inflate(R.layout.snack_bar_ad,null);
        ImageView imageView = (ImageView)snackView.findViewById(R.id.snackbar_ad_image);
        Picasso.with(getBaseContext()).load(ad.getImageUrl()).into(imageView);
        layout.addView(snackView, 0);
        snackbar.show();
}
Run Code Online (Sandbox Code Playgroud)

我想要的是我想要ImageView相同宽度的小吃吧.但我的代码不起作用.

这就是我得到的.

在此输入图像描述

如何使用Snackbar将ImageView设置为相同的宽度并适合小吃吧?

android snackbar android-snackbar

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

在 Laravel 中上传后将 aws s3 文件权限设置为公开

我正在开发一个网络应用程序。在我的应用程序中,我正在实现文件上传功能。我将上传的文件存储在 aws s3 存储桶中。我将文件上传到 s3 存储桶,如下所示。

 $photo_file_path = $request->file('image_file')->store(
            'images/artworks/gallery-images/'.uniqid(),  's3'
          );
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常。文件上传到s3。但问题是我希望文件在上传到 s3 时是公开的,这样照片也可以从 url 访问。我将存储桶策略和访问控制都设置为 public。

这是我的存储桶策略

{
    "Version": "2012-10-17",
    "Id": "Policy1234566788",
    "Statement": [
        {
            "Sid": "Stmt151234344545",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的存储桶现在对于访问控制和存储桶策略都是公开的。 在此处输入图片说明

但是当我从 Laravel 上传文件时,它被上传到存储桶,但该文件仍然对公众隐藏。那么,上传文件后如何将文件权限更改为公开?

amazon-s3 amazon-web-services laravel

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

"Call to a member function without globalScopes on null" in Laravel and Nova

I am planning to develop a web application using Laravel and Nova. Nova is a CMS package for Laravel introduced very very recently. Since it is the new technology, I am having an issue with using it. I cannot declare a field for the foreign key in the resource.

I created a new model called, Post running the artisan command to make model and this is the definition of the Post migration class.

class CreatePostsTable extends Migration
{
    /**
     * …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-nova

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

Laravel 单元测试当 Eloquent 模型事件被触发时是否触发事件

我正在开发 Laravel 应用程序并编写测试。现在,我在编写测试时遇到问题,该测试断言在触发雄辩模型事件时是否触发事件。这就是我正在做的事情。

这是我的 ItemObserver 创建的函数

public function created(Item $item)
{
    event(new NewItemCreated($item));
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在雄辩模型观察者的创建事件内触发一个事件。

如果我想断言测试中是否触发了事件,我必须伪造该事件,然后断言类似这样的事情。

Event::fake();
factory(Item::class)->create(); //created function of observer should be triggered but it will not be
Event::assertDispatched(NewItemCreated::class);
Run Code Online (Sandbox Code Playgroud)

正如您在测试代码中看到的,我试图断言创建项目时是否触发事件。但是测试永远不会通过,因为观察者类的创建函数永远不会被调用,因为事件在测试中是伪造的。我如何测试这个场景?

laravel laravel-testing laravel-events

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

AWS CLI 列出 S3 存储桶中的所有文件

我正在练习AWS命令。我的客户给了我 AWS IAM 访问密钥和秘密,但没有给我可以登录管理面板的帐户。这些密钥正在与项目本身一起使用。我想做的是尝试列出 S3 存储桶中递归的所有文件。

这就是我到目前为止所做的。

我已使用以下命令配置 CLI 的 AWS 配置文件

aws configure
Run Code Online (Sandbox Code Playgroud)

然后我可以通过运行以下命令列出所有可用的存储桶

 aws s3 ls
Run Code Online (Sandbox Code Playgroud)

然后我尝试列出存储桶中的所有文件。我尝试运行以下命令。

 aws s3 ls s3://my-bucket-name
Run Code Online (Sandbox Code Playgroud)

但它似乎没有给我正确的内容。另外,我还需要一种在存储桶中导航的方法。我怎样才能做到这一点?

amazon-s3 amazon-web-services aws-cli

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

Laravel 7 模型工厂为 faker 抛出“InvalidArgumentException: Unknown formatter”异常

我开始使用 Laravel 8 构建一个 Web 应用程序。我注意到 Laravel 8 中发生了一些变化,包括模型工厂。现在,我正在使用模型工厂编写单元测试。但是当我使用 faker 伪造字段时,它会抛出错误。

这是我的测试方法。

public function testHasRoleReturnsTrue()
{
    $user = User::factory()->create();
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我现在要做的就是尝试使用 factory 创建用户。这是我的用户模型工厂类。

<?php

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = User::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'name' => $this->faker->name,
            'email' => …
Run Code Online (Sandbox Code Playgroud)

faker laravel laravel-factory laravel-8

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

React Native:从导航堆栈中删除当前屏幕,保留以前的屏幕

我正在构建一个 React Native 应用程序。我正在使用 React Navigation,https://reactnavigation.org/进行导航。现在,我正在努力删除当前屏幕或屏幕历史记录,就像在本机 Android 中一样。

我尝试像下面这样重置它。

 props.navigation.reset({
                            index: 0,
                            routes: [{ name: "ItemDetails" }]
                        })
Run Code Online (Sandbox Code Playgroud)

我在 ItemList 屏幕中调用该代码。但从主屏幕登陆到项目列表屏幕。如果我使用该代码,主屏幕也会从堆栈中删除。但我只想从堆栈中删除 ItemList 并保留主屏幕。我怎样才能做到这一点?

react-native react-navigation

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

Flutter:使用 Workmanager 的定期后台任务在 IOS 上不起作用

我正在使用 Flutter 构建 IOS 和 Android 应用程序。我的应用程序需要在应用程序关闭时运行一个后台任务(假设大约每 15 分钟运行一次)。然后显示通知。我正在关注这篇文章,https://www.geeksforgeeks.org/background-local-notifications-in-flutter/ ?fbclid=IwAR0sKCVATW068AxuRIyDO693vcqwU0VTPVl1bgVkM3J3EGCHExv8P13dvz4 。所以,我正在使用这个库,https://pub.dev/packages/workmanager。它适用于 Android,但不适用于 IOS。

这是我的代码。

void main() {
  // needed if you intend to initialize in the `main` function
  WidgetsFlutterBinding.ensureInitialized();
  Workmanager().initialize(

    // The top level function, aka callbackDispatcher
      callbackDispatcher,

      // If enabled it will post a notification whenever
      // the task is running. Handy for debugging tasks
      isInDebugMode: true
  );
  // Periodic task registration
  Workmanager().registerPeriodicTask(
    "2",

    //This is the value that will be
    // returned in the callbackDispatcher …
Run Code Online (Sandbox Code Playgroud)

ios flutter flutter-workmanager

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