我刚刚在我的Laravel项目5.4中添加了修补程序.当我尝试运行时:
php artisan tinker
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
PHP Warning: Uncaught ErrorException: require(/home/abdullah/php_apps/website): failed to open stream: Success in /home/abdullah/php_apps/website/vendor/laravel/tinker/src/ClassAliasAutoloader.php:51
Stack trace:
#0 /home/abdullah/php_apps/website/vendor/laravel/tinker/src/ClassAliasAutoloader.php(51): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'require(/home/a...', '/home/abdullah/...', 51, Array)
#1 /home/abdullah/php_apps/website/vendor/laravel/tinker/src/ClassAliasAutoloader.php(51): require()
#2 /home/abdullah/php_apps/website/vendor/laravel/tinker/src/ClassAliasAutoloader.php(33): Laravel\Tinker\ClassAliasAutoloader->__construct(Object(Psy\Shell), '/home/abdullah/...')
#3 /home/abdullah/php_apps/website/vendor/laravel/tinker/src/Console/TinkerCommand.php(59): Laravel\Tinker\ClassAliasAutoloader::register(Object(Psy\Shell), '/home/abdullah/...')
#4 [internal function]: Laravel\Tinker\Console\TinkerCommand->handle()
#5 /home/abdullah/php_apps/website/vendor/laravel/framework/src/Illuminate/Contai in /home/abdullah/php_apps/website/vendor/laravel/tinker/src/ClassAliasAutoloader.php on line 51
PHP Fatal error: Laravel\Tinker\ClassAliasAutoloader::__construct(): Failed opening required '/home/abdullah/php_apps/website' (include_path='.:/home/abdullah/.phpbrew/php/php-7.0.1/lib/php') in /home/abdullah/php_apps/website/vendor/laravel/tinker/src/ClassAliasAutoloader.php on line 51
[Symfony\Component\Debug\Exception\FatalErrorException]
Laravel\Tinker\ClassAliasAutoloader::__construct(): Failed opening required '/home/abdullah/php_apps/website' (include_path='.:/home/abdullah/.phpbrew/php/php-7.0.1/lib/php')
Run Code Online (Sandbox Code Playgroud)
我试过给各种文件夹权限.还尝试将Tinker类添加到console/kernel.php.
我想开始使用 Tinker 来更快地调试函数。问题是,对于每一次改变,我都需要停下来重新开始修补。
我希望我能使用像 mysql 这样的东西;你可以启动 mysql 并像这样进行查询,但你也可以运行类似的东西
mysql -u root -e "select * from users"
,它不需要启动 mysql 界面就可以工作。
所以我试图找到一种方法来做这样的事情
> tinker -e "User::find(1)->email"
"my.user@gmail.com"
>
Run Code Online (Sandbox Code Playgroud) 我无法在 Laravel Tinker 中使用模型工厂。
//ItemFactory.php
class ItemFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Item::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'name' => $this->faker->name,
'slug' => $this->faker->slug(5, true),
'code' => $this->faker->words(5, true),
'description' => $this->faker->sentence,
'price' => $this->faker->randomNumber(1000, 10000),
'size' => $this->faker->randomElement(['Small', 'Medium', 'Large',]),
];
}
}
Run Code Online (Sandbox Code Playgroud)
内部修补匠
>>> factory(App\Item::class)->create();
Run Code Online (Sandbox Code Playgroud)
它给我一个错误:
PHP 致命错误:在第 1 行的 …
从Tinker内部我想:
>>> Auth::loginUsingId(12);
=> false
>>> Auth::user();
=> null
>>> Auth::attempt(['email' => 'my@email.com']);
=> false
Run Code Online (Sandbox Code Playgroud)
我猜测,因为Auth通常使用会话数据,也许会话不适用于修补程序.
是否可以在修补程序中进行身份验证?
我曾经tinker使用以下命令在以前的 Amazon AMI 上执行:
sudo -E -u webapp php artisan tinker
Run Code Online (Sandbox Code Playgroud)
现在我正在使用PHP 7.4 on Amazon Linux 2,当我执行上述命令时,出现此错误:
Unable to create PsySH runtime directory. Make sure PHP is able to write to /run/user/1000 in order to continue.
Run Code Online (Sandbox Code Playgroud)
所以,为了测试,我给了这个文件夹的完全权限,然后再次执行我的命令:
sudo chmod 777 /run/user/1000
sudo -E -u webapp php artisan tinker
Run Code Online (Sandbox Code Playgroud)
实际上,没有错误,但是诸如RDS_PASSWORD或之类的环境变量RDS_DB_NAME未加载,因此无法执行数据库操作:
Psy Shell v0.10.4 (PHP 7.4.4 — cli) by Justin Hileman
>>> env('RDS_DB_NAME')
=> null
>>> User::first()
Illuminate/Database/QueryException with message 'SQLSTATE[HY000] [2002] Connection refused …Run Code Online (Sandbox Code Playgroud) php amazon-web-services laravel amazon-elastic-beanstalk tinker
如何使用 Laravel Tinker 换行?
所以而不是:
$users = User::all(); foreach($users as $user) {echo $user->email;}
我希望能够写成如下:
$users = User::all();
foreach($users as $user) {
echo $user->email;
}
Run Code Online (Sandbox Code Playgroud)
是否可以?
在 Laravel 8 中,我可以使用工厂为用户生成虚拟数据,但我无法为产品生成数据。我收到以下错误:
error BadMethodCallException with message 'Call to undefined method App\Models\Product::factory()'. User_id in Product is the foreign key.
Run Code Online (Sandbox Code Playgroud)
我无法确定出了什么问题。
型号:Product.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
//use HasFactory;
protected $fillable = ['title', 'type', 'firstname', 'surname', 'price', 'papl'];
public function user(){
return $this->belongsTo(User::class);
}
}
Run Code Online (Sandbox Code Playgroud)
型号:User.php
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are …Run Code Online (Sandbox Code Playgroud) 我现在已经搜索了几个小时,但即使有类似的问题也找不到解决方案。
我正在尝试php artisan tinker使用用户webmaster(项目目录的所有者demo)在全新的 laravel 安装上运行,但出现以下错误:
In Configuration.php line 352:
mkdir(): Permission denied
Run Code Online (Sandbox Code Playgroud)
使用详细标志运行:
异常跟踪:Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a mkdir() at /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Configuration。 php:352 Psy\Configuration->getRuntimeDir() at /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Shell.php:185 Psy\Shell->getDefaultCommands() at /media/ usb/drive1/websites/demo/vendor/symfony/console/Application.php:1211 Symfony\Component\Console\Application->init() 在 /media/usb/drive1/websites/demo/vendor/symfony/console/Application .php:435 Symfony\Component\Console\Application->add() 在 /media/usb/drive1/websites/demo/vendor/psy/psysh/src/Psy/Shell.php:134 Psy\Shell->add( ) 在 /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:421 Symfony\Component\Console\Application->addCommands() 在 /media/usb/drive1/websites/demo/vendor/laravel/tinker/src/Console/TinkerCommand.php:54 Laravel\Tinker\Console\TinkerCommand->handle() 在 n/a:n/a call_user_func_array() 在 /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29 Illuminate\Container\BoundMethod::Illuminate\Container{closure}() 在 /media /usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/ BoundMethod.php:87 Illuminate\Container\BoundMethod::callBoundMethod() 在 /media/usb/drive1/websites/demo/vendor/ laravel/framework/src/Illuminate/Container/BoundMethod.php:31 Illuminate\Container\BoundMethod::call() 在 /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Container/Container .php:549 Illuminate\Container\Container->call() 在 /media/usb/drive1/websites/demo/vendor/laravel/framework/src/Illuminate/Console/Command.php:183 Illuminate\Console\Command->execute() 在 /media/usb/drive1/网站/演示/供应商/symfony/console/Command/Command.php:252 Symfony\Component\Console\Command\Command->run() 在 /media/usb/drive1/websites/demo/vendor/laravel/framework/src /Illuminate/Console/Command.php:170 Illuminate\Console\Command->run() 在 /media/usb/drive1/websites/demo/vendor/symfony/console/Application.php:938 …
我可以使用以下命令获取第一个用户,他是 Laravel tinker 的管理员:
$adminUser = App\User::where('is_admin',true)->first();
我如何获得满足此条件的所有用户?
如何使用 Laravel Artisan Tinker 编写两行命令?
User::whereEmail('john.doe@home.com')
->get()
Run Code Online (Sandbox Code Playgroud)
PHP 解析错误:语法错误,第 1 行出现意外的 T_OBJECT_OPERATOR
tinker ×10
laravel ×9
php ×4
laravel-8 ×2
factories ×1
laravel-5 ×1
laravel-5.3 ×1
laravel-5.4 ×1
model ×1
permissions ×1
php-7 ×1