我想使用 Repository Pattern 但我被语法困住了。我想获取我的函数 index()。
第一步,我创建文件夹 Repositories 并创建文件 AuteurRepository.php
在我的文件 AuteurController 中我有这个:
public function index()
{
$auteurs = Auteur::oldest()->paginate(5);
return view('admin.auteurs.index', compact('auteurs'))
->with('i', (request()->input('page', 1)-1)*5);
}
在我的模型中我只有一个文件Auteur
protected $fillable = ['name', 'firstname'];
我有两个问题:
1) 在我的文件 AuteurRepository 中,我应该如何创建我的函数 index()?
我试过了?
<?php
namespace App\Repositories;
use App\Auteur;
class AuteurRepository
{
public function index()
{
return Auteur::oldest()->paginate(5);
}
}
?>
我的第二个问题是在我的 AuteurController 我不知道该怎么做?
我现在有这个
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Auteur;
use App\Repositories\AuteurRepository;
class AuteurController extends Controller
{
protected $auteurs;
public function __construct(AuteurRepository $auteurs)
{
$this->auteurs = $auteurs;
}
public function index(Request $request)
{
return view('admin.auteurs.index', compact('auteurs'))
}
}
最佳答案
1) In my file AuteurRepository how should I create my function index()?
你可以给它起你想要的名字,index(), allRecords(), ...。并执行您需要的查询。
My second question is in my AuteurController I don't understand what to do ?
如果您的存储库如下所示:
class AuteurRepository
{
public function index()
{
return Auteur::oldest()->paginate(5);
}
}
在您的 Controller 中,您可以像这样访问 repo 索引函数:
class AuteurController extends Controller
{
protected $auteurs;
public function __construct(AuteurRepository $auteurs)
{
$this->auteurs = $auteurs;
}
public function index(Request $request)
{
$auteurs = $this->auteurs->index();
return view('admin.auteurs.index', compact('auteurs'))
}
}
编辑
此外,您可以自定义一些查询。例如:
在存储库中接受索引方法中的一个参数:
class AuteurRepository
{
public function index($filters)
{
$pagination = $filters['pagination'];
$order = $filters['order'];
return Auteur::orderBy('created_at', $order)
->paginate($pagination);
}
}
然后在 Controller 中创建要作为参数传递的数组:
$filters = [
'pagination' => 5,
'order' => 'asc',
];
或
$filters = [
'pagination' => 10,
'order' => 'desc',
];
或者您可以从请求中获取值(请务必保留默认值,以防请求输入为空)
$filters = [
'pagination' => $request->input('pagination')?: 5,
'order' => $request->input('order')?: 'asc',
];
然后将参数传给repo:
$auteurs = $this->auteurs->index($filters);
希望对您有所帮助;-)
关于php - Laravel 上的存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56450309/
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl
我了解instance_eval和class_eval之间的基本区别。我在玩弄时发现的是一些涉及attr_accessor的奇怪东西。这是一个例子:A=Class.newA.class_eval{attr_accessor:x}a=A.newa.x="x"a.x=>"x"#...expectedA.instance_eval{attr_accessor:y}A.y="y"=>NoMethodError:undefinedmethod`y='forA:Classa.y="y"=>"y"#WHATTT?这是怎么回事:instance_eval没有访问我们的A类(对象)然后它实际上将它添加到