ENV:
PHP:Session扩展-Manual
LARAVEL:10.10
我有一个这样的消息模型:
# Message.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Message extends Model
{
use HasFactory;
public $timestamps=false;
function subject():HasMany
{
return $this->hasMany(Subject::class);
}
}
我有一个这样的repository:
# MessageRepository.php
<?php
namespace App\Repositories;
use App\Models\Message;
class MessageRepository
{
public function __construct(protected Message $Message)
{
}
}
我有一个这样的服务:
# MessageService.php
<?php
namespace App\Services;
use App\Repositories\MessageRepository;
class MessageService
{
function __construct(protected MessageRepository $message)
{
}
function infos()
{
return ['count'=>$this->all()->count()];
// return ['count'=>4];
}
function all()
{
return $this->message->all();
}
}
当我尝试调用infos()时,我得到一个错误消息Call to undefined method App\Repositories\MessageRepository::all()
为什么我不能继承模特的遗产
如何修复我的代码?
我的解决方案之一是在MessageRepository.php中定义一个函数all()
...
function all()
{
return $this->message->all();
}
1条答案
按热度按时间t30tvxxf1#
在MessageRepository中将
protected
设置为public
。正确的调用方法是: