所以我试着在我的模型上有一个类似全局范围的东西,这样我就不必每次都去考虑一些参数。
事情是这样的,我现在有以下的作用域-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中创建了一个全局范围,我想在全局范围中查询一个关系模型。我有一个视频模型、一个类别模式和一个VideoCategory枢轴模型,我想使用全局范围中的视频模型访问这个类别模型,例如:
<?php
use Illuminate\Database\Eloquent\ScopeInterface;
use Illuminate\Database\Eloquent\Builder;
class DefaultScope implements ScopeInterface{
public function apply(Builder $builder)
{
$m
在我的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
我正在努力获得雄辩的ORM,以产生我需要的结果。我有三个模型,工作,阶段和团队。
作业模型
public function phases()
{
return $this->hasMany('Eloquent\Models\Phase', 'job_id', 'job_id');
}
相位模型
public function job()
{
return $this->belongsTo('Eloquent\Models\Job', 'job_id', 'job_id')
用户可以互相阻止。一个用户可以阻止多个(其他)用户,一个用户可以被多个(其他)用户阻塞。在User模型中,我有这些多到多的关系:
/**
* Get the users that are blocked by $this user.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function blockedUsers()
{
return $this->belongsToMany(User::class, 'ignore_lists', '
我正在尝试编写一个“作用域”,将左连接添加到我的查询中。
示例用法:
$bookings = Booking::where('bookings.company_id','=',Auth::user()->company_id)
->withGuid();
我已经让它工作了,但是我已经硬编码了类名和表名:
GuidScope.php
<?php
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Query\JoinClause;
class GuidSc
是可以在Eloquent ORM中创建的。
SELECT * FROM 'data'
JOIN 'notice' ON 'data'.'id_notice' = 'notice'.'id'
WHERE 'data'.'escalator'= 'yes'
AND 'data'.'floors'= '2'
AND 'data'.'color'= 'white'
我们正在开发一个基于Laravel Spark的应用程序。作为其中的一部分,我们希望将资源绑定到一个特定的团队。 我知道我们可以添加一个全局作用域,例如: <?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class TeamScope implements Scope
{
/**
* Apply the scop
我试着用雄辩的口才来形容一段关系,结果也是一样的:
Call to undefined method Illuminate\Database\Query\Builder::xxxx()
其中xxxx可以是在我的模型中定义的“子”,或者如果我使用另一个代码,则可以保存()。
首先,我有两个模型(简化):
<?php
use Cartalyst\Sentry\Users\Eloquent\User as SentryUserModel;
class User extends SentryUserModel {
public static $rules = ar
我是laravel的新手,我在管理与模型和控制器的关系时遇到了一些问题。
我有indexcontroller,在那里调用:
$usersModel = new \App\Models\Users();
if ($usersModel->checkOnExistsByEmail($params['user_email'])){
//...find it
}
模型文件:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Users extends Model {
pro
我正在使用雄辩的结合Slim框架来构建一个小的API。由于某种原因,我得到了这个错误,我找不到问题所在:
Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable.
数据库设置是正确的。此错误将在服务器上的暂存环境中引发。在本地,使用MySQL 5.6.29,它运行得非常完美。虽然我不认为它与MySQL 5.7相关,因为我有另一个应用程序运行在同一台服务器上,使用相同版本的雄辩器。
谁能给我指明正确的方向?
我在用:
雄辩版本:5.3.23
PHP版本:5.6.28
数据库驱动程序和版本: My
这是我的范围,apply()方法工作得很好。
use Illuminate\Database\Eloquent\ScopeInterface;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class JobStatusScope implements ScopeInterface
{
/**
* Apply scope on the query.
*
* @param \Illuminate\Da
我正在尝试在我自己的遗留项目中使用来自Laravel的雄辩的ORM。我已经设置了模型,并且Eloquent工作正常,但是我不能理解如何在模型中使用eloquent数据库连接来运行原始SQL查询。我现在需要运行原始SQL查询,直到我可以重构整个代码库以使用ORM。
namespace App\Providers;
use Illuminate\Database\Capsule\Manager;
use League\Container\ServiceProvider\AbstractServiceProvider;
class DatabaseServiceProvider extends
我想在我的项目中添加一个全局范围。并在一些模型中使用它。所以我创建了这个代码:(在app/scope文件夹中) <?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class GameStoreScope implements Scope
{
/**
* Apply the scope to a given Eloqu
我正在使用Laravel spark,并且通过使用在特征中实现的作用域来限制团队对模型的访问 namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class TeamScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
当我在用户模型中使用此代码时
public function get_user_by_email($email) {
$data = $this->where('email', $email);
return $data->id;
}
我知道这个错误
Property [id] does not exist on the Eloquent builder instance.
at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php
因此,我试图在Laravel5.1中创建一个全局范围,但是继续获取以下错误Trait 'Eloquent\Scopes\DependentTypeTrait' not found。
这是我的代码:
App\Models\Eloquent\Scopes\DependentTypeTrait.php:
<?php namespace App\Models\Eloquent\Scopes;
trait DependentTypeTrait {
/**
* Boot the Active Events trait for a model.
*
一个小背景…
我的应用程序中有两个模型是“可定位的”。我可以很容易地在存储库中编写一个查询来返回我所需要的内容,但是,我相信在Laravel和repository等的帮助下,这样做会做得更好(我可能错了)。
因此,我提出了以下解决方案:
实例抽象模型
abstract class AbstractModel extends Model implements SomeOtherStuff
{
public function scopeNearby(Builder $query)
{
return $query->selectRaw(
我遇到了一个错误的方法调用异常问题,错误是这样的
BadMethodCallException in Builder.php line 2443:
Call to undefined method Illuminate\Database\Query\Builder::lugars()
in Builder.php line 2443
at Builder->__call('lugars', array()) in Builder.php line 1239
at Builder->lugars() in Builder.php line 1239
有一次我被告知问题
TLDR:当SoftDeletes特征包含在父模型中时,我不再将父模型的软删除实例作为子模型的动态属性。这是如何做到的呢?
我定义了几个基本模型,如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Builder;
class User extends Model
{
use SoftDeletes;
public functi
我试图添加新的方法来简化和重用代码,但失败了。
用户模型:
public function products()
{
return $this->hasMany('App\Product');
}
public function obsolate()
{
return $this->where('status', 'obsolate');
}
当我尝试检索类似于auth()->user()->products()->obsolate()的内容时,它会给出一些错误,例如
调用未定义方法Illumin
我正在尝试过滤Laravel资源(审查)数据使用2‘选择-过滤器’。
我有一个过滤器A=制造商和过滤器B=型号。
制造商有许多型号。我在产品表中有制造商和型号栏。
默认情况下,“模型”过滤器显示选择下拉列表中的所有值。当“制造商”被选中时,我想减少“型号”过滤器中的选择选项。
因此,例如:当制造商= " Apple“时,'Model‘过滤器应该只显示苹果的”型号“。
在我的评论资源中,我有下面的代码:
/**
* Get the filters available for the resource.
*
* @param \Illuminate\Http\Request
我使用count()方法来计算模型中的行数。如果我像这样直接使用它,它就会起作用:
return Model::count();
但是,当我试图从查询范围使用它时,我会得到一个错误:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
模型中的查询范围:
public function scopecountUsers($query) {
return $query->count();
}
有人能解释一下为什么会这样吗?
表中没有行。
我有两个链接的模型:jobs和job_translations。一份工作有许多翻译。所以在我的工作模式中,有:
/**
* Get the translations for the job.
*/
public function translations()
{
return $this->hasMany('App\Models\JobTranslation');
}
在我的控制器中,我希望像这样动态地构建一个查询:
$query = Job::query();
if ($request->has('translation')) {
我需要应用特定的全局范围,只有在经过身份验证的用户的角色等于某物的情况下。因此,具有特定角色的用户只能对给定的记录子集执行查询。
我可以轻松地处理用户模型(当前登录的用户),但不能在作用域的应用方法中处理。
作用域构造函数在auth中间件运行之前很早就执行了。在应用方法中解析用户,而不是在构造函数中解析用户。
好的,我在apply方法中:
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illumin
我有一个叫做Bar的模型,它扩展了Laravel的Eloquent
class Bar extends Eloquent{
}
现在的问题是,我需要在多个表之间进行一些连接,为此,我想使用Laravel的DB类来提高性能(使用eloquent最终花费了我大约750个查询和20秒的加载时间)。
我可以在扩展Eloquent的同一模型中使用DB吗?
如果没有,我应该创建另一个模型吗?
我是Laravel和ORM的新手。在保存任何模型之前和之后,我如何连接到Eloquent来触发代码?我知道我可以为特定的模型做以下事情,但我正在研究如何为每个模型做这件事。
class Page extends Eloquent {
public function save()
{
// before save code
parent::save();
// after save code
}
}