草庐IT

eloquent

全部标签

php - Laravel 动态关系 - 在急切加载时访问模型属性

我在我的Laravel模型上有一个Eloquent关系,它是动态的——也就是说,特定数据库字段的值决定了哪个模型将被加载。当我第一次实例化模型实例然后引用该关系时,我能够很好地加载该关系,但是当我急切地加载该关系时它不起作用。具体来说,我有一个Product模型。该产品可能是也可能不是另一个产品的父产品。如果产品的parent_id设置为0,则该产品被视为父部件(无论它是否有子部件)。如果parent_id设置为不同产品的ID,则该产品是子产品。我需要能够访问Product::with('parent')并且知道parent关系将返回either本身(是的,重复数据)或不同的产品(如果

php - Laravel 5.2 获取与 whereIn() 中相同顺序的记录

我有这个带有记录ID的数组:$record_ids=[60,66,70,64,69,67,65,57];然后我使用模型获取行,如下所示:$result=Model::whereIn('id',$record_ids)->get();问题-我想获得与$record_ids数组中相同顺序的行。Laravel以ID升序向我返回这些行,如下所示:[57,60,64,65,66,67,69,70]该怎么做?如何让Laravel“默认不按IDASC排序”?谢谢。 最佳答案 您可以像这样使用orderByRaw()$result=Model::w

PHP : Laravel - Array push after using eloquent pluck method

这是我的查询$RecipientList=Employees::select(DB::Raw('CONCAT(first_name,"",last_name)asemployee_name'),'email')->pluck('employee_name','email');它给我想要的正确结果,但是在我执行查询之后,我还有1个键=>值对要插入结果数组。如果我打印当前结果,它是这样的。Illuminate\Support\CollectionObject([items:protected]=>Array([punit@*****.com]=>PunitGajjar[milan@****

php - (laravel) 是否可以通过传递 id 以外的字段来使用方法注入(inject)?

我对Laravel有点陌生,我试图从它的方法(依赖项)注入(inject)中获得最大yield,同时也旨在保持良好的url结构(对于SEO)。案例如下:我正在调用一个路由,它的末尾附加了一个变量,如下所示:www.mywebsite.com/user/id这是用这样的方法发送给Controller的:publicfunctionlistUsers(User$user){dd($user);}这很好用;如果我去www.mywebsite.com/user/3,Laravel会自动为我获取id=3的用户但为了获得更好的SEO,我需要将该url更改为如下所示:www.mywebsite.co

php - 在 Laravel 中创建和返回具有关系的模型

我有几个端点用于获取/发布对该应用程序中笔记的评论。GET端点使用Eloquent的with方法将评论的作者数据包含在响应中:publicfunctiongetComments(Note$note){return$note->comments()->with(['author'])->get();}如何在创建/返回Eloquent模型时也包含作者数据?这是我目前的方法:publicfunctionpostComment(Note$note,Request$request){$user=$this->appUserRepo->getFromRequest($request);$text=

php - 将请求实例传递给 Model Observer,Laravel 5.4

我刚刚了解了模型观察者,并希望将我的一些逻辑从Controller转移到观察者。这是我拥有的:AppServiceProvider.phppublicfunctionboot(){WorkOrder::observe(WorkOrderObserver::class);}WorkOrderObserver.phpnamespaceApp\Observers;useApp\Site;useApp\WorkOrder;useCarbon\Carbon;useApp\WorkOrderNumber;classWorkOrderObserver{publicfunctioncreating(W

php - 有没有办法将原始查询映射到模型

我有一个复杂的原始SQL查询,我不想将其逆向转换为查询生成器。有没有办法将查询结果映射到模型?简而言之,我有这样的查询:SELECTusers.*FROMusersWHEREexists(super_long_raw_query)ANDmany_more_raw_where_clausesORDERBYsomething_complexetc;它只返回一个模型(来自与模型对应的表)的列。将其转换为“LaravelQueryBuilder”查询会很糟糕,不可读:User::where(/*...*/)->whereExists(function(){/*supercomplexcallb

php - Laravel 5.4 存储链接

我想在html文件中显示图片我转到链接文件夹public/storage/image是空的,但在storage/image中我找到了文件和它也保存在数据库中。*@foreach($cvsas$cv)photo)}}"alt="...">{{$cv->titre}}{{$cv->presentation}}AfficherModifierSupprimer@endforeach 最佳答案 首先在.env文件中创建一个名为FILESYSTEM_DRIVER的变量并将其设置为public像这样FILESYSTEM_DRIVER=publi

php - 如何隐藏 laravel 中的关系列?

我有这样的声明:App\User::with('client')->find(2)->makeHidden('client.phone_no');我想从关系中隐藏某些列,但我不能用makeHidden()做到这一点,因为它只接受Model的参数而不是关系。如何从关系中隐藏某些列? 最佳答案 如果您不想通过将phone_no添加到hidden属性来隐藏所有请求的phone_no,您可以这样做:$user=App\User::with('client')->find(2);$user->client->makeHidden('phone

php - 拉维尔 5 : How to use 'where' or 'orderBy' using eloquent?

首先,这不是Laravel4:howto"orderby"usingEloquentORM的副本我有这个模型User,然后我有这个模型Idea。我正在写一个包含用户详细信息的View,我想发布用户提出的所有想法。现在,想法有一个状态,第一个状态是“草稿”,这意味着只有发布想法的用户可以查看它,不应向查看个人资料的其他用户显示该想法。使用eloquent我可以做类似的事情:@foreach($user->ideaas$idea)...displaydetails...@endforeach我的问题是这种方法会循环遍历所有想法并按照它们被引入的顺序。我可以添加一个@if来仅显示我想要的内容