标签: tinker

在第1行的Psy Shell代码中找不到Laravel 5.6 Tinker Class'...'

我正在尝试在新安装的Laravel中进行简单的课程.为此我创建了一个文件夹app/Convert并将php文件放在那里.这个类看起来像这样:

<?php 

namespace App\Convert;

class Converter
{
    public function __construct()
    {
        ...Code
    }
}
Run Code Online (Sandbox Code Playgroud)

现在当我尝试从Tinker访问它时:

use App\Convert\Converter;
new Converter;
Run Code Online (Sandbox Code Playgroud)

我明白了:

PHP Fatal error:  Class 'App/Convert/Converter' not found in Psy Shell code on line 1
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?据我所知,laravel应该自动执行app文件夹中的文件,它是子文件夹,还是我错了?

编辑:对不起,我第一次写错了(我只是玩了很多名称空间,所以我采取了错误的版本).问题实际上是文件名不是Converter.php,所以当我将它更改为Converter.php时,事情开始发生变化.如果将德文作为答案而不是评论,我会将德文的答案设置为正确的答案.所以写在这里:

包含类的文件的名称应与类名相同.并且文件的路径与命名空间路径相同.(见马修在他的回答下面的评论)

class laravel tinker

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

Nesbot Carbon diffInHours 的奇怪结果

我正在做一些tinker关于 SO 的另一个问题。并且对于 Carbon 的 diffInHours 有一些奇怪的行为。未来时间的差异与过去时间的差异不同。这是我的修补程序命令和返回值:

>>> \Carbon\Carbon::now()->diffInHours(\Carbon\Carbon::now()->addHours(3))
=> 3
>>> \Carbon\Carbon::now()->addHours(3)->diffInHours(\Carbon\Carbon::now())
=> 2
>>> \Carbon\Carbon::now()->addHours(3)->diffInHours(\Carbon\Carbon::now())
=> 2
>>> \Carbon\Carbon::now()->addHours(3)->diffInHours(\Carbon\Carbon::now())
=> 2
>>> \Carbon\Carbon::now()
=> Carbon\Carbon @1595427497 {#4431
     date: 2020-07-22 14:18:17.952594 UTC (+00:00),
   }
Run Code Online (Sandbox Code Playgroud)

有没有人对导致这种行为的原因有任何见解?

php laravel php-carbon tinker

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

PHP 错误:在 Laravel 8 Tinker 中未找到“Page”类

我正在使用工厂模型类在修补程序上使用此命令插入一些虚拟数据:当我运行时

composer dump-autoload,
php artisan tinker,  
Page::factory(10)->create()
Run Code Online (Sandbox Code Playgroud)

然后这个错误显示

PHP 错误:在/var/www/html/laravel/laravel8-blogeval()'d第 1 行代码中未找到“Page”类

图片描述在这里

我的模型文件位置app\Models\Page.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory; 
use Illuminate\Database\Eloquent\Model;

class Page extends Model {
    use HasFactory;
     /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'title',
        'slug',
        'body',
        'excerpt',
        'image',
        'thumb',
        'view_count',
        'user_id',
        'meta_keywords',
        'meta_description',
        'social_image',
        'order',
        'published_at',
        'is_active',
        'is_destroy'
    ]; }
Run Code Online (Sandbox Code Playgroud)

我的工厂文件位置 database/factories/PageFactory.php

<?php

namespace Database\Factories;

use App\Models\Page;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class PageFactory …
Run Code Online (Sandbox Code Playgroud)

php factory laravel tinker

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

Laravel“工匠修补匠”以冒号结束 (:)

在此输入图像描述

当打印大量文本时(例如 User::all()),旧的tinker v2.7.1 会打印所有数据。新修补程序以冒号 (:) 结束。有没有办法恢复旧的行为?

laravel tinker

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

如何指定Tinker使用其他数据库连接?

我有两个数据库连接。一个用于我的应用程序,另一个用于测试。在我的.. \ config \ database.php中

         'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

        'testing' => [
            'driver'    => 'mysql',
            'host'      => env('DB_TEST_HOST', 'localhost'),
            'database'  => env('DB_TEST_DATABASE', 'forge'),
            'username'  => env('DB_TEST_USERNAME', 'forge'),
            'password'  => env('DB_TEST_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方式更改播种中的数据库连接

php artisan db:seed …
Run Code Online (Sandbox Code Playgroud)

database laravel artisan laravel-5.1 tinker

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

如何使用 artisan Tinker 更新数据库中的数据

首先,我使用下面的命令调用 artisantinker

$ php artisan tinker
Run Code Online (Sandbox Code Playgroud)


然后,我计划获取 Admin 中的所有模型,将名称更新为“admin”,然后使用下面的命令保存更新

$admin = App\Admin::get()->name="admin"->save()

//Admin is my model
//name is the table structure of Admin table
//then I save it with save()
Run Code Online (Sandbox Code Playgroud)


但是,它会弹出一个错误,如下所示:-

PHP 错误:在第 1 行的 Psy Shell 代码中的字符串上调用成员函数 save()

laravel tinker

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

有没有办法保护laravel tinker?

我想知道是否可以扩展或替换该php artisan tinker命令,因此它首先要求进行身份验证,以作为看门人可以使用它的方式。

我尝试了以下方法:

<?php

namespace App\Console\Commands;

use Laravel\Tinker\Console\TinkerCommand;
use Illuminate\Support\Facades\Auth;

class Tinker extends TinkerCommand
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'tinker';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return …
Run Code Online (Sandbox Code Playgroud)

laravel tinker laravel-artisan

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

PHP 错误:类“Illuminate/Foundation/Auth/Admin”[Laravel 8]

当我尝试使用修补程序插入管理员数据时,我遇到了 php 错误问题。我正在创建一个多重身份验证用户,其中一个用于用户,一个用于管理员。

PHP 错误:在第 13 行的 c:/S/htdocs/iV/app/Models/Admin.php 中找不到类“Illuminate/Foundation/Auth/Admin”

我该如何解决该错误?

Admin

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\Admin as Authenticatable;
use Illuminate\Notifications\Notifiable;
use App\Notifications\AdminResetPasswordNotification;


class Admin extends Authenticatable
{
    use HasFactory, Notifiable;

    protected $guard = 'admin';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [ …
Run Code Online (Sandbox Code Playgroud)

php laravel tinker laravel-8

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

Laravel 8 + Tinker:如何创建虚拟数据

在以前的 Laravel 版本中,我在 tinker 中使用它:

php artisan tinker
factory(App\Banana::class, 3)->create();
Run Code Online (Sandbox Code Playgroud)

但是在 Laravel 8 中,它给出了这个错误:`PHP Error: Class 'Database/Factories/bananaFactory' not found

请如何使用 tinker 在 Laravel 8 中创建虚拟数据?谢谢你。

laravel tinker

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

Laravel:为什么 Eloquent 显示隐藏字段?

只需在字段名称前添加 # 前缀即可

我正在使用 Laravel Breeze,它默认将passwordremember_token字段设置为隐藏。

class User extends Authenticatable
{
    use HasFactory, Notifiable;

    protected $fillable = [
        'username',
        'email',
        'password',
    ];

    protected $hidden = [
        'password',
        'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我获取在 Tinker 中运行的 User 实例,User::inRandomerOrder()->first()我仍然能够看到这些假定的隐藏字段。

App\Models\User {#4440
 id: 14,
 username: "verdie10",
 email: "jerrold.ziemann@example.org",
 email_verified_at: "2021-08-31 11:19:47",
 #password: "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi",
 #remember_token: "F87k6RPxgi",
 created_at: "2021-08-31 11:19:47",
 updated_at: "2021-08-31 11:19:47",
},
Run Code Online (Sandbox Code Playgroud)

php laravel tinker

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

Laravel Tinker创建具有构造函数作为接口的新对象

我正在尝试使用Laravel Tinker创建一个具有构造函数作为接口的新对象.MyClass.php

class MyClass{
 public function __construct(ApiInterface $APIloader)
    {
        $this->APIloader = $APIloader;
    }
}
Run Code Online (Sandbox Code Playgroud)

ApiInterface.php

interface ApiInterface {
    ..
    ..
}
Run Code Online (Sandbox Code Playgroud)

我想在修补程序中测试我的类,所以我所做的是:

  1. php artisan tinker
  2. >> $a = new App\MyClass(new App\ApiInterface);

我得到的错误是:

PHP致命错误:在第1行的eval()代码中找不到类'App\ApiInterface'

修补匠不允许我todo,我觉得修补匠不认识一个接口作为一个类

任何的想法 ?

谢谢

php laravel laravel-5 tinker

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