小编Mar*_*łek的帖子

刷新迁移时出现外键约束错误 - Laravel

我在Laravel项目中遇到迁移问题.

因为我对Laravel相当新,所以我无法理解.

我想将一个外键添加到现有的表中,这样可行,但是当我刷新迁移时,我收到此错误:

[Illuminate\Database\QueryException]
SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key
constraint fails (SQL: drop table `battles`)

[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key
constraint fails
Run Code Online (Sandbox Code Playgroud)

这些是我目前的迁移:

表项目

class CreateProjectsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('projects', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->string('body');
            $table->string('tags');
            $table->string('img');
            $table->string('img_tricolor');
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();
        });
    } …
Run Code Online (Sandbox Code Playgroud)

php mysql sql laravel laravel-migrations

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

有条件地建立一个Eloquent查询

上下文

我使用Laravel的雄辩如我的ORM.我创建了一个API端点提供访问Cars其有几个属性(color,make,status).

我的端点允许客户端通过这些属性的任何子集过滤返回值,如果它们不提供任何属性,那么我将返回所有内容.

问题

我想构建一个条件查询,它从"全部"开始,并根据指定的参数缩小.这是我写的:

public function getCars(Request $request)
{
    $results = Cars::all();

    if($request->has('color'))
         $results = $results->where('color', $request->input('color'));

    if($request->has('make'))
         $results = $results->where('make', $request->input('make'));

    if($request->has('status'))
         $results = $results->where('status', $request->input('status'));

    return $results->toJson();
}
Run Code Online (Sandbox Code Playgroud)

如果我在没有参数的情况下调用它,API将返回数据库中所有汽车的列表.但是,如果我指定(例如)0API的状态返回一个空集,尽管有些汽车的状态为0.

我接近这个错误吗?有什么根本我缺席的吗?

请注意,如果我改为:

$results = Cars::where('status', 0);
return $results->get();
Run Code Online (Sandbox Code Playgroud)

正确生成汽车列表

php laravel eloquent laravel-5 laravel-query-builder

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

使用会话时 Laravel 的点表示法出现问题

我在尝试存储和获取会话中的项目时遇到了一个小问题。我正在使用一个 API,并尝试将此 api 的结果缓存到会话中。

问题是 API 通常会返回我尝试缓存的域名,google.com然后返回该域的值。

Session::put($domain, $value)不幸的是,当我使用然后 return存储它时Session::all(),数组如下所示......

array(
    'google' => 
        'com' => 'my_value'
)
Run Code Online (Sandbox Code Playgroud)

我真的需要它...

array(
    'google.com' => 'my_value'
)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,点符号破坏了数组依赖的完整性。

php session laravel laravel-5.1

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

与Route.php中的身份验证一起授权:Laravel 5.1

我在Route下面检查用户是否经过身份验证,然后让他们访问该页面

<?php
Route::group([
    'middleware' => 'auth',
], function() {

    Route::get('/Categories-List', 'Skills\Category_Controller@index');
});
Run Code Online (Sandbox Code Playgroud)

在我看来auth()->user(),RoleID要检查用户是管理员还是其他角色.我想检查是否RoleID为1然后只让他们访问该页面.

我可以在Laravel 5.1中设置授权和身份验证

php laravel laravel-5 laravel-middleware laravel-5.1

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

未找到Laravel 5类'干预\ Image\ImageServiceProvider'

嗨,我有介入图像的问题.当我使用composer update

php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
Run Code Online (Sandbox Code Playgroud)

我有错误:

[Symfony\Component\Debug\Exception\FatalErrorException]
未找到类'Intervention\Image\ImageServiceProvider'**

你有没有想法?我做了一切来自http://image.intervention.io/getting_started/installation,我不知道我现在该怎么办,请帮帮我:)

php laravel composer-php

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

Laravel 中缺少路由所需的参数

在我的 Laravel 应用程序中,每当我转到此路由时:/admin 或 admin/users 我收到以下错误消息,但其他路由的工作方式类似于 admin/users/create 或 admin/users/edit:

Missing required parameters for [Route: admin.users.edit] [URI: admin/users/{id}/edit]. (View: C:\xampp\htdocs\CMS\resources\views\admin\index.blade.php)
Run Code Online (Sandbox Code Playgroud)

请注意,我没有包含 index.blade.php 的所有 html 代码,因为它太长了,唯一的刀片代码来自我粘贴的内容。

Index.blade 视图:

 <ul class="nav nav-second-level">
                            <li>
                                <a href="{{route('admin.users.edit')}}">All Userss</a>
                            </li>

                            <li>
                                <a href="{{route('admin.users.create')}}">Create User</a>
                            </li>

                        </ul>
Run Code Online (Sandbox Code Playgroud)

路线清单:

网址:

- admin/users
- admin/users/create
- admin/users/store
- admin/users/update
- admin/users/{id}/edit
Run Code Online (Sandbox Code Playgroud)

姓名:

1. admin.users.index
 2. admin.users.create
 3. admin.users.store
 4. admin.users.update
 5. admin.users.edit
Run Code Online (Sandbox Code Playgroud)

行动:

 1. App\Http\Controllers\AdminUsersController@index 
 2. App\Http\Controllers\AdminUsersController@create 
 3. App\Http\Controllers\AdminUsersController@store 
 4. App\Http\Controllers\AdminUsersController@update 
 5. App\Http\Controllers\AdminUsersController@edit
Run Code Online (Sandbox Code Playgroud)

管理员/用户

路线:

Route::get('admin/users/', [

    'uses' => …
Run Code Online (Sandbox Code Playgroud)

php laravel blade laravel-routing laravel-5

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

(laravel)是否可以通过传递除id之外的字段来使用方法注入?

我是Laravel的新手,并试图从它的方法(依赖)注入中获得最大的收益,同时也旨在保持良好的网址结构(对于搜索引擎优化).

情况就是这样:我正在调用一个附加了变量的路径,如下所示:www.mywebsite.com/user/id

这是用一个像这样的方法的控制器:

public function listUsers(User $user){
   dd($user);
}
Run Code Online (Sandbox Code Playgroud)

那工作得很好; 如果我去www.mywebsite.com/user/3,Laravel将自动获取id = 3的用户

但是为了拥有更好的搜索引擎优化,我需要将这个网址更改为:www.mywebsite.com/users/nickname.

是否可以以类似于我当前使用的方式使用方法注入,但是使用除id之外的另一个字段(在本例中为昵称)来从数据库中获取User对象?

如果可能,我该怎么办?

我可以手动完成,但我希望从Laravel中获得最大收益.

感谢您的时间,而且,我正在学习英语,所以如果您是母语为英语或能够流利的话,如果您指出我的语法错误(简单而不歪曲帖子),我将不胜感激.

布鲁诺

php laravel eloquent laravel-5.3 laravel-5.4

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

使用 laravel 将文件存储到 aws s3

请给我一个在 laravel 5.5 中将文件存储到 AWS S3 的示例。我已经使用 AWS 凭证配置了文件系统文件。

我看到了这个功能

Storage::put('file.jpg', $contents);

但不知道第二个参数是什么

filesystem.php文件内容如下

return [


    'default' => env('FILESYSTEM_DRIVER', 'local'),



    'cloud' => env('FILESYSTEM_CLOUD', 's3'),


    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => '*********',
            'secret' => '******',
            'region' => 'my region',
            'bucket' => 'bucketname',
        ],

    ],

];
Run Code Online (Sandbox Code Playgroud)

提前致谢

amazon-s3 laravel laravel-5 laravel-filesystem laravel-5.5

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

Laravel-如何将API资源递归转换为数组?

我正在使用Laravel API资源,并希望将实例的所有部分都转换为数组。

在我的PreorderResource.php

/**
 * Transform the resource into an array.
 *
 * @param  \Illuminate\Http\Request
 * @return array
 */
public function toArray($request)
{
    return [
        'id' => $this->id,
        'exception' => $this->exception,
        'failed_at' => $this->failed_at,
        'driver' => new DriverResource(
            $this->whenLoaded('driver')
        )
    ];
}
Run Code Online (Sandbox Code Playgroud)

然后解决:

$resolved = (new PreorderResource(
  $preorder->load('driver')
))->resolve();
Run Code Online (Sandbox Code Playgroud)

乍一看,该方法可以解决问题,但问题是它无法递归工作。我的资源解析如下:

array:3 [
  "id" => 8
  "exception" => null
  "failed_at" => null
  "driver" => Modules\User\Transformers\DriverResource {#1359}
]
Run Code Online (Sandbox Code Playgroud)

如何解析API资源以递归数组?

php laravel laravel-response laravel-5.6 laravel-resource

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

Laravel 5.8安装错误在database.php第58行:未定义的类常量'MYSQL_ATTR_SSL_CA'

当我尝试安装Laravel 5.8时,它会抛出错误

在database.php第58行:

未定义的类常量'MYSQL_ATTR_SSL_CA'

在此输入图像描述

在此之后,我试图在服务器上运行该应用程序.它有时很好.有时它会抛出同样的错误.我也无法在Artisan上运行任何命令.为什么会这样,以及如何解决这个问题?

laravel artisan laravel-5.7 php-7.3 laravel-5.8

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