试图获取非对象的属性"照片" - Laravel 6



任何人都可以帮我解决这个问题吗,我无法动态地获取文件从存储到我的邮件附件的确切路径,以便注册过程中的每个新用户都可以上传他们的图像,并且可以作为附件发送到邮件地址,这是我的注册控制器 - 注册控制器.php

<?php
namespace AppHttpControllersAuth;
use AppHttpControllersController;
use AppProvidersRouteServiceProvider;
use AppUser;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateSupportFacadesHash;
use IlluminateSupportFacadesValidator;
use AppMailRegisterMail;
use IlluminateSupportFacadesMail;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest');
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
if (request()->hasFile('photo')){
$photo = request()->file('photo')->getClientOriginalName();
request()->file('photo')->storeAs('photos', $user->id. '/' . $photo, '');
$user->update(['photo' => $photo]);
}
if (request()->hasFile('signature')){
$signature = request()->file('signature')->getClientOriginalName();
request()->file('signature')->storeAs('signatures', $user->id. '/' . $signature, '');
$user->update(['signature' => $signature]);
}

Mail::to('test@test.com')->send(new RegisterMail($data));
return $user;
}
}

我的可邮寄邮件 - 注册邮件.php

<?php
namespace AppMail;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;
class RegisterMail extends Mailable
{
use Queueable, SerializesModels;
public $data;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
$attachments = [
'storage/photos/'.auth()->id().'/'.auth()->user()->photo->photo,
'storage/signatures/'.auth()->id().'/'.auth()->user()->signature->signature,
];
$email = $this->subject('New Registration')->view('my_mail_template')->with('data', $this->data);
foreach($attachments as $filePath){
$email->attach($filePath);
}
return $email;
}
}

我的迁移

<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('photo')->nullable();
$table->string('signature')->nullable();
$table->rememberToken();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
}

我的模型 - 用户.php

<?php
namespace App;
use IlluminateContractsAuthMustVerifyEmail;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password', 'photo', 'signature',
];

protected $hidden = [
'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}

我的路线 - 网络.php

<?php
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
return view('welcome');
});
Auth::routes(['verify' => true]);
Route::get('/home', 'HomeController@index')->name('home');

将此auth()->user()->photo->photo更改为class RegisterMail中的此auth()->user()->photo

User模型上的photo是一个字段,而不是与另一个模型的关系。代码中的第二个->photo是尝试访问可能是字符串的属性。

最新更新