在我的Laravel应用程序中,我有一个包含start_date和end_date属性的订阅模型。我创建了两个查询范围,scopeActive和scopeFuture,以查找活动订阅和未来订阅(分别)。
我想知道如何在OR上下文中使用这两个作用域构建查询,以便找到任何活动的或未来的订阅。
订阅模型
/**
* Scope a query to only include active subscriptions.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\E
我需要应用特定的全局范围,只有在经过身份验证的用户的角色等于某物的情况下。因此,具有特定角色的用户只能对给定的记录子集执行查询。
我可以轻松地处理用户模型(当前登录的用户),但不能在作用域的应用方法中处理。
作用域构造函数在auth中间件运行之前很早就执行了。在应用方法中解析用户,而不是在构造函数中解析用户。
好的,我在apply方法中:
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illumin
我想知道是否可以使用查询构建器在模型中使用查询构建器在两个表之间建立连接,我不想使用eloquent
这是我的模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use DB;
class Tbl_Perimetro extends Model
{
puplic function perimetros(){
$carteras = DB::table('tbl_perimetros')
->join('tbl_equipo_postventaatcs&
我正在尝试编写一个,我需要知道前面的作用域是否更早地添加了任何->select()信息,如果没有,则添加它(这将删除前面的内容)。
这个作用域得到一个$query对象,它是\Illuminate\Database\Query\Builder (根据文档)
如果查看Builder.php,就会看到$columns属性,该属性用于存储要获取的列
/**
* The columns that should be returned.
*
* @var array
*/
public $columns;
但是,在我的作用域中,如果我尝试使用
$query->columns
我收到一条
我使用count()方法来计算模型中的行数。如果我像这样直接使用它,它就会起作用:
return Model::count();
但是,当我试图从查询范围使用它时,我会得到一个错误:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
模型中的查询范围:
public function scopecountUsers($query) {
return $query->count();
}
有人能解释一下为什么会这样吗?
表中没有行。
我用的是laravel eloquent。我已经使用eloquent从两个表中获取数据。我有post桌子和chat桌子。对于post表,我有模型Post.php,对于chat表,我有模型Chat.php。这是我创建的雄辩关系,用于为用户获取单个帖子的聊天。
在Post.php中
public function TeamMessage()
{
return $this->hasMany('App\Chat','post_id');
}
在Chat.php中
public function ChatRelation()
{
return $this
关于范围查询,返回任何falsey值将导致返回Eloquent\Builder是否是有意的行为?
如果我返回任何non-falsey值(例如数字、字符串、数组等),它将返回实际值(无论是数字、字符串、数组等等),但如果返回false,0,null,它总是返回一个雄辩的\Builder。
是否有一种方法可以解决这个问题,并在falsey而不是类型生成器的对象时返回正确的类型?
抽象测试用例
In模型
class MyModel extends Eloquent
{
public function scopeTestFalse{
return 0;
}
public fun
我是Laravel的新手,我试着做一个查询范围,但是它似乎不起作用,我一直收到这个错误
Argument 1 passed to Letters::scopeForUser() must be an instance of User
我的用户登录了,但它似乎仍然不起作用。
这是我的信模型
<?php
class Letters extends Eloquent {
protected $table = 'letters';
public function scopeForUser(User $u)
{
return $que
我使用DISTINCT ON从两个连接的表中获取最新的行。在我的例子中,订阅者属于多个类别,我需要获取订阅者所属的最新类别。我已经让它在原始查询中工作,但我需要使用Eloquent重新创建它。 SELECT DISTINCT ON (subscribers.id) subscribers.*,
subscriber_categories.*
FROM subscribers
LEFT JOIN subscriber_categories
ON subscribers.id = subscriber_categories.subscriber_id
ORDER BY subscri
我使用Eloquent编写了以下查询:
Contact::select(DB::raw("DATE_FORMAT(DATE(`created_at`),'%b %d') as date"))
->addSelect(DB::raw("`created_at`"))
->addSelect(DB::raw("COUNT(*) as `count`"))
我试图将属于特定cash_sales_items的所有cash_sale的总量用laravel中的范围进行汇总。问题是,当我在这些表中有一些信息时,代码运行良好,但当表为空时,则会出现错误。
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
下面是代码和表结构
accessories_cash_salesmysql> describe accessories_cash_sales;
+---------------+------------------+-----
所以我试着在我的模型上有一个类似全局范围的东西,这样我就不必每次都去考虑一些参数。
事情是这样的,我现在有以下的作用域-class;
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class NeedsPaymentScope implements Scope
{
/**
* Apply the scope to
在我的Laravel应用程序中,我有一个页面,在该应用程序中,我正在获取类别,并在该类别中急切地加载事件。效果很好。我现在要做的是获取类别,但这次,根据用户选择的区域/位置获取事件。这些都是我工作的模型;
1.区域类别
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Region extends Model
{
/**
* Get events within region
*
* @return \Illuminate\Database\Eloq
我对Laravel非常陌生,我正在复习教程,并且被困在了一些东西上。
我有一个复杂的查询,需要重复使用where子句中的一个参数更改。我将其作为查询作用域添加到模型中,然后从相应的Controller调用它。当我试图返回数据时,尽管我得到了这个错误:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
以下是查询范围:
public function scopeCrosstab($wellID)
{
return static::select('sampleD
我有这种类型的查询,我想将其转换为Laravel eloquent查询,而不必进行行查询或DB::select。这就是行查询的外观
Where (user_id = '$from' OR to = '$from') AND (user_id = '$to' OR to = '$to')
我如何在eloquent中做到这一点?到目前为止,我刚刚完成了
return $query->where('user_id', $from)->orWhere('to', $from)->get()
我试着在Eloquent和Laravel中找到一种优雅的方式来表达
select * from UserTable where Age between X and Y
在Eloquent中有between运算符吗(我找不到它)。
到目前为止,我得到的最接近的结果是将我的查询链接起来,如下所示
$query->where(age, '>=', $ageFrom)
->where(age, '<=', $ageTo);
我还遇到了whereRaw,它看起来还不错
$query->whereRaw('age BETWE
我有一个模型口才叫(TicketModel),
我添加了一个全局范围,用于获取用户的所有票证,但有时,我想使用没有这个范围的票证如何忽略此范围?
这就是模型
<?php
class TicketModel extends Eloquent{
public $timestamps = false;
public static function boot()
{
static::addGlobalScope(new TicketScope);
}
}
use Illuminate\Database\Eloquent\Builder;
use
假设我有两个从Eloquent扩展而来的模型,它们相互关联。我能嘲笑这段关系吗?
ie:
class Track extends Eloquent {
public function courses()
{
return $this->hasMany('Course');
}
}
class Course extends Eloquent {
public function track()
{
return $this->belongsTo('Track');
}
}
<?php
class Cat extends Eloquent {
public function user() {
return $this->belongsTo('User');
}
}
class User extends Eloquent {
public function cats() {
return $this->hasMany('Cat');
}
}
现在:
$cats = Cat::with('user')->get();
执行2个
我在我的问题末尾有代码。这就是我的问题。我不明白为什么我的输入变量在模型中不起作用。它返回"Object of Illuminate\Database\Eloquent\Builder could converted string“,并在查询中指向和"f.object_status_code = '$s_status'”行。
奇怪的是,我在模型中犯了一个错误,在某一时刻输入了一些额外的随机参数。
public function scopegetFeeList($mistake, $s_status){
..。这会返回结果,尽管第一个参数不应该在那里。我不知道为什
我正在与Laravel和Vue一起开发一个混合应用程序。我有一个用例,并不是所有的用户都有特定的关系。例如,客户端可以有一个域和多个业务单元。
现在我把它设成这样:
<?php
namespace App\Models;
use Laravel\Sanctum\HasApiTokens;
use Spatie\MediaLibrary\HasMedia;
use Illuminate\Notifications\Notifiable;
use Lab404\Impersonate\Models\Impersonate;
use Spatie\MediaLibrary\Interact
这些是我的模特
class DateAttribute extends Eloquent{
public function xmlDocument(){
return $this->belongsTo('XMLDocument');
}
}
class XMLDocument extends Eloquent{
public function dateAttribute(){
return $this->hasOne('DateAttribute');
}
}
XMLDocument模型有一个Date
在拉拉模型中可能使用遗传吗?我解释:
是否有可能扩展一个扩展雄辩类的模型?
class A extends Eloquent
{
}
class B extends A
{
}
A、B也是两个不同的表,B有A_id作为外键等字段。怎样才能成为B类的构造函数?这是一种可行的解决方案还是更好地使用hasOne关系?
不,每个A对象也是B对象。埃斯卡。用户与教师
谢谢