抱歉格式不正确我是新手 - 我正在尝试使用 laravel 管理用户照片页面,我通过应用程序/模型文件中的公共函数形成关系然后将它们链接到控制器来做到这一点。在用户模型中创建函数“photo()”然后在“PhotoController”中编写必要的代码后 - 我给出了错误代码“Undefined method 'photos'.intelephense(1013)'
我似乎无法弄清楚为什么我不断收到此错误消息,如果有人理解为什么会这样,我将非常感激!
我尝试在 PhotoController 中调用“App/Model/User”,但无济于事。
PhotoController代码-
<?php
namespace App\Http\Controllers;
use App\Models\Photos;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Barryvdh\Debugbar\Facades\Debugbar;
class PhotoController extends Controller
{
//show all photos
public function index() {
DebugBar::info('Showing the Message!');
return view('listpg', [
'photos' => Photos::latest()->filter(request(['tag', 'search']))->paginate(6)
]);
}
//show single photo
public function show(Photos $photo) {
return view('photo', [
'photo' => $photo
]);
}
//creation form
public function create() {
return view('create');
}
//store photo
public function store(Request $request) {
$formFields = $request->validate([
'title' => 'required',
'name' => ['required',Rule::unique('photos', 'name')],
'tags' => 'required',
'body' => 'required'
]);
if($request->hasFile('image_path')) {
$formFields['image_path'] = $request->file('image_path')->store('images', 'public');
}
$formFields['user_id'] = auth()->id();
Photos::create($formFields);
return redirect('/')->with('message', 'Post created successfully!');
}
//Edit form
public function edit(Photos $photo) {
return view('edit', ['photo' => $photo]);
}
//update photo
public function update(Request $request, Photos $photo) {
$formFields = $request->validate([
'title' => 'required',
'name' => ['required'],
'tags' => 'required',
'body' => 'required'
]);
if($request->hasFile('image_path')) {
$formFields['image_path'] = $request->file('image_path')->store('images', 'public');
}
$photo->update($formFields);
return back()->with('message', 'Post updated successfully!');
}
//Delete Listing
public function destroy(Photos $photo){
$photo->delete();
return redirect('/')->with('message', 'Post deleted successfully!');
}
//Manage posts
public function manage() {
return view('manage', ['photos' => auth()->user()->photos()->get()]);
}
}
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;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
//relation with posts
public function photos() {
return $this->hasMany(Photos::class, 'user_id');
}
}
Photos.php - 照片模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Photos extends Model
{
use HasFactory;
//protected $fillable = ['title', 'name', 'tags', 'body'];
public function scopeFilter($query, array $filters) {
if($filters['tag'] ?? false) {
$query->where('tags', 'like', '%' . request('tag'). '%');
}
if($filters['search'] ?? false) {
$query->where('title', 'like', '%' . request('search'). '%')
->orWhere('body', 'like', '%' . request('search'). '%')
->orWhere('tags', 'like', '%' . request('search'). '%');
}
}
//relationship to user
public function user() {
return $this->belongsTo(User::class, 'user_id');
}
}