我有雄辩的查询问题.我正在使用急切加载(一对一关系)来获得' 学生 '使用' 考试 ',使用下面的代码.
Student::with('exam')->orderBy('exam.result', 'DESC')->get()
Run Code Online (Sandbox Code Playgroud)
我想通过' 考试 '中的' 结果 '列来订购收到的行.我在用
->orderBy('exam.result', 'DESC')
Run Code Online (Sandbox Code Playgroud)
但它没有用.有什么想法怎么做?
我想得到条件匹配的表中的第一行:
User::where('mobile', Input::get('mobile'))->first()
Run Code Online (Sandbox Code Playgroud)
它运行良好,但如果条件不匹配,则会抛出异常:
ErrorException
Trying to get property of non-object
Run Code Online (Sandbox Code Playgroud)
目前我这样解决:
if (User::where('mobile', Input::get('mobile'))->exists()) {
$user = User::where('mobile', Input::get('mobile'))->first()
}
Run Code Online (Sandbox Code Playgroud)
我可以不运行两个查询吗?
我有这样一张桌子:
table
- field1: tinyint
- field2: varchar (nullable)
- datefield: timestamp (nullable)
Run Code Online (Sandbox Code Playgroud)
现在我想得到所有条目,其中field1为1,field2为null,其中datefield小于X或null.我已经尝试过这样的事:
$query = Model::where('field1', 1)
->whereNull('field2')
->where('datefield', '<', $date)
->orWhereNull('datefield');
Run Code Online (Sandbox Code Playgroud)
但那不起作用.我总是得到datefield为null的每个条目.其他领域是什么并不重要.我还尝试将它分成2个查询:首先获取datefield小于X或null的每一行然后(基于它)获取field1为1且field2为null的每个字段.
结果是一样的.知道怎么做吗?
我已经阅读了关于雄辩的laravel 4文档,并且对push()部分非常感兴趣.它说,
有时您可能希望不仅保存模型,还保存其所有关系.为此,您可以使用push方法:
拯救模型和关系
$user->push();
对不起,但是我在save()和push()之间的区别有点模糊.我希望有人可以为我清除这一个.谢谢.
有没有办法在其saving或updating事件中查看模型属性的旧/先前值?
例如.有类似以下可能:
User::updating(function($user)
{
if ($user->username != $user->old->username) doSomething();
});
Run Code Online (Sandbox Code Playgroud) 到目前为止,我有以下模型:
class Listing extends Eloquent {
//Class Logic HERE
}
Run Code Online (Sandbox Code Playgroud)
我想要一个基本函数来检索我的表"listing"的前10行并将它们传递给视图(通过控制器?).
我知道这是一项非常基本的任务,但我找不到一个简单的指南,它实际上逐步解释了如何显示一组基本结果,同时详细说明了模型,控制器和视图文件中所需的内容.
是什么区别attach(),并sync()在Laravel 4雄辩的ORM?我试着环顾四周但找不到任何东西!
findOrFail()如果没有找到任何内容,则会抛出404 的方法,例如:
User::findOrFail(1);
Run Code Online (Sandbox Code Playgroud)
如何通过自定义列找到实体或失败,如下所示:
Page::findBySlugOrFail('about');
Run Code Online (Sandbox Code Playgroud) 如果我尝试声明属性,像这样:
public $quantity = 9;
Run Code Online (Sandbox Code Playgroud)
...它不起作用,因为它不被视为"属性",而仅仅是模型类的属性.不仅如此,我还阻止访问实际存在的"数量"属性.
那我该怎么办?
我一直在尝试创建一个简单的用户管理系统,但在查询关系时不断遇到障碍.例如,我有用户和角色,每当我尝试对所有用户及其角色进行查询时,我都会收到错误消息.标题中的那个只是我遇到的最新版本.
我的用户和角色模型如下所示:
class Role extends Model
{
public function users()
{
$this->belongsToMany('\App\User', 'fk_role_user', 'role_id', 'user_id');
}
}
Run Code Online (Sandbox Code Playgroud)
class User extends Model
{
public function roles()
{
$this->belongsToMany('\App\Role', 'fk_user_role', 'user_id', 'role_id');
}
}
Run Code Online (Sandbox Code Playgroud)
我的迁移表中两者之间的多对多关系如下所示:
public function up()
{
Schema::create('role_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->nullable(); //fk => users
$table->integer('role_id')->unsigned()->nullable(); //fk => roles
$table->foreign('fk_user_role')->references('id')->on('users')->onDelete('cascade');
$table->foreign('fk_role_user')->references('id')->on('roles')->onDelete('cascade');
});
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试在控制器中获取他们关系的所有记录:
public function index()
{
$users = User::with('roles')->get();
return $users;
}
Run Code Online (Sandbox Code Playgroud)
所以我需要另一双眼睛告诉我这里我缺少什么?