我最近开始使用Eloquent.
当我使用PHP Active Record时,有一个很好的函数可以检查记录是从数据库加载还是新实例.在Eloquent中我可以使用类似的东西吗?
新的我的意思是:
$article = new Article;
Run Code Online (Sandbox Code Playgroud)
而数据库中的一个就是
$article = Article::find(1);
Run Code Online (Sandbox Code Playgroud) 在L-4中很简单:
$random_quote = Quotation::all()->random(1);
Run Code Online (Sandbox Code Playgroud)
但是现在在L-5中,这篇文章中描述的单一方法没有工作: Laravel - Eloquent或Fluent随机行
我的视图文件只是空白.有任何想法吗?
编辑:
解决: $ random_quote = Quotation :: orderByRaw("RAND()") - > first();
我很好奇为什么Eloquent关系hasMany有一个不同的签名而不是belongsToMany.特别是自定义连接表名称 - 对于给定Comment属于多个Roles 的系统,给定的Role有多个Comments,我想将关系存储在一个被调用的表中my_custom_join_table,并将键设置为comment_key和role_key.
return $this->belongsToMany('App\Role', 'my_custom_join_table', 'comment_key', 'role_key'); // works
Run Code Online (Sandbox Code Playgroud)
但相反,我无法定义该自定义表(至少文档没有提到它):
return $this->hasMany('App\Comment', 'comment_key', 'role_key');
Run Code Online (Sandbox Code Playgroud)
如果我有一个Role对象hasMany Comments,但我使用非标准表名来存储该关系,为什么我可以使用这种非标准表以一种方式而不是另一种方式?
在Eloquent ORM中是否有解决方案?
我有父母的角色:
Array ( [0] => 87, [1] => 65, ... )
Run Code Online (Sandbox Code Playgroud)
我想要选择表PRODUCTS其中parent_id列=数组中的任何id
我有一组对象.假设对象是标签:
$tags = Tag::all();
Run Code Online (Sandbox Code Playgroud)
我想为每个标签检索某个属性,比如它的名称.我当然能做到
foreach ($tags as $tag) {
$tag_names[] = $tag->name;
}
Run Code Online (Sandbox Code Playgroud)
但这个问题是否有更为荒谬的解决方案?
有点像$tags->name?
当我使用eloquent时,我可以使用"where"方法,然后使用方法"get"来填充包含我在数据库中选择的内容的对象.我的意思是:
$users = User::where('gender', 'M')->where('is_active', 1)->get(['pseudo', 'email', 'age', 'created_at'])->toArray();
Run Code Online (Sandbox Code Playgroud)
在这里,我可以选择我想要的列,如'伪','电子邮件'等.但我在laravel doc中想到的是相反的方法.它可能是这样的:
$users = User::where('gender', 'M')->where('is_active', 1)->notGet(['pseudo', 'email', 'age', 'created_at'])->toArray();
Run Code Online (Sandbox Code Playgroud)
谢谢你的未来答案,祝你有愉快的一天.
我的数据库里有狗表,我想找回来N latest added dogs.
我发现的唯一方法是这样的:
Dogs:all()->where(time, <=, another_time);
Run Code Online (Sandbox Code Playgroud)
还有另外一种方法吗?例如像这样的东西Dogs:latest(5);
非常感谢你的帮助:)
我在Laravel 4上遇到了一个小问题.我想delete()在记录上使用该方法,但由于某种原因它实际上并没有删除记录.destroy()但是,所以我的代码很好.另外,如果我Teetime::where('date', '=', $formattedDate)->count()转到我的视图,我会得到一个正确的.有什么问题?
if($action=="delete") {
$teetime = Teetime::where('date', '=', $formattedDate)->firstOrFail();
// for some reason $teetime->delete() doesn't work
Teetime::destroy($teetime->id);
}
Run Code Online (Sandbox Code Playgroud) 我正在更新到laravel 5.3,我收到此消息:
[2016-08-23 23:12:39] local.ERROR: BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::lists() in /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2431
Stack trace:
#0 [internal function]: Illuminate\Database\Query\Builder->__call('lists', Array)
#1 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1423): call_user_func_array(Array, Array)
#2 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableTrait.php(254): Illuminate\Database\Eloquent\Builder->__call('lists', Array)
#3 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableTrait.php(170): App\User->getExistingSlugs('nouseratnouser-...')
#4 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableTrait.php(312): App\User->makeSlugUnique('nouseratnouser-...')
#5 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableServiceProvider.php(72): App\User->sluggify()
#6 [internal function]: Cviebrock\EloquentSluggable\SluggableServiceProvider->Cviebrock\EloquentSluggable\{closure}(Object(App\User))
#7 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(221): call_user_func_array(Object(Closure), Array)
#8 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(164): Illuminate\Events\Dispatcher->fire('eloquent.saving...', Array, true)
#9 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1664): Illuminate\Events\Dispatcher->until('eloquent.saving...', Object(App\User))
#10 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1456): Illuminate\Database\Eloquent\Model->fireModelEvent('eloquent.saving...')
#11 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(562): Illuminate\Database\Eloquent\Model->save()
#12 /home/vagrant/Code/database/seeds/UserSeeder.php(34): Illuminate\Database\Eloquent\Model::create(Array)
#13 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(39): UserSeeder->run()
#14 /home/vagrant/Code/database/seeds/DatabaseSeeder.php(37): Illuminate\Database\Seeder->call('UserSeeder')
#15 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(63): DatabaseSeeder->run()
#16 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2279): Illuminate\Database\Console\Seeds\SeedCommand->Illuminate\Database\Console\Seeds\{closure}()
#17 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(64): Illuminate\Database\Eloquent\Model::unguarded(Object(Closure))
#18 [internal …Run Code Online (Sandbox Code Playgroud)