Php 动态查询ORM Laravel 4.2
好的,我有一个用Php 动态查询ORM Laravel 4.2,php,codeigniter,laravel,laravel-4,eloquent,Php,Codeigniter,Laravel,Laravel 4,Eloquent,好的,我有一个用CodeIgniter编写的通用模型,一位朋友问我是否可以为他将其转换为laravel4.2。我一直在做这个,我想大部分都是正确的,但是我被select语句卡住了 在CodeIgniter中,我有以下内容: public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE){ if($field != FALSE){ // WHERE in case of FIELD
CodeIgniter
编写的通用模型,一位朋友问我是否可以为他将其转换为laravel4.2
。我一直在做这个,我想大部分都是正确的,但是我被select语句卡住了
在CodeIgniter
中,我有以下内容:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE){
if($field != FALSE){
// WHERE in case of FIELD / VAL :)
$this->db->where($field, $val);
}
$query = $this->db->get($table);
if($multiple == 1){
// Multiple rows
return $query->result_array();
} else {
// One row
return $query->row_array();
}
}
这里有人知道如何将此函数转换为laravel4.2
语法吗?
我目前有:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE){
$result = DB::table($table);
}
我很快就被卡住了,因为我不知道如何在
Laravel 4.2
中通过拆分查询的各个部分来达到同样的效果,就像我使用CodeIgniter
一样,你可以用同样的方式链接方法:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if ($field != FALSE) {
// WHERE in case of FIELD / VAL :)
$query->where($field, $val);
}
if ($multiple)
return $query->get();
else
return $query->first();
}
您可以使用相同的方式链接方法:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if ($field != FALSE) {
// WHERE in case of FIELD / VAL :)
$query->where($field, $val);
}
if ($multiple)
return $query->get();
else
return $query->first();
}
您可以使用相同的方式链接方法:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if ($field != FALSE) {
// WHERE in case of FIELD / VAL :)
$query->where($field, $val);
}
if ($multiple)
return $query->get();
else
return $query->first();
}
您可以使用相同的方式链接方法:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if ($field != FALSE) {
// WHERE in case of FIELD / VAL :)
$query->where($field, $val);
}
if ($multiple)
return $query->get();
else
return $query->first();
}
Laravel的类似之处在于,您可以在实际执行查询之前,使用在多个阶段中构建查询。一旦你知道了这一点,翻译就非常简单:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if($field){
// WHERE in case of FIELD / VAL :)
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
我不认为这是一个很好的实践,尽管在一个有说服力的模型中依靠流利的语言,但是在有些情况下这是没有帮助的。如果当前的目标是将项目转换为Laravel,那么可能有调用代码依赖于此方法存在的事实。将函数转换为使用Elount而不是Fluent将更改函数的签名,并导致代码的其他部分中断,但看起来是这样的:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
调用代码本身可以修改为在Laravel中执行完全相同的功能,如下所示:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
从长远来看,在Eloquent(IMHO)内部使用此函数并不会真正为您节省太多,相反,这只会造成混乱。Laravel的相似之处在于,您可以在实际执行查询之前使用在多个阶段构建查询。一旦你知道了这一点,翻译就非常简单:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if($field){
// WHERE in case of FIELD / VAL :)
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
我不认为这是一个很好的实践,尽管在一个有说服力的模型中依靠流利的语言,但是在有些情况下这是没有帮助的。如果当前的目标是将项目转换为Laravel,那么可能有调用代码依赖于此方法存在的事实。将函数转换为使用Elount而不是Fluent将更改函数的签名,并导致代码的其他部分中断,但看起来是这样的:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
调用代码本身可以修改为在Laravel中执行完全相同的功能,如下所示:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
从长远来看,在Eloquent(IMHO)内部使用此函数并不会真正为您节省太多,相反,这只会造成混乱。Laravel的相似之处在于,您可以在实际执行查询之前使用在多个阶段构建查询。一旦你知道了这一点,翻译就非常简单:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if($field){
// WHERE in case of FIELD / VAL :)
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
我不认为这是一个很好的实践,尽管在一个有说服力的模型中依靠流利的语言,但是在有些情况下这是没有帮助的。如果当前的目标是将项目转换为Laravel,那么可能有调用代码依赖于此方法存在的事实。将函数转换为使用Elount而不是Fluent将更改函数的签名,并导致代码的其他部分中断,但看起来是这样的:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
调用代码本身可以修改为在Laravel中执行完全相同的功能,如下所示:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
从长远来看,在Eloquent(IMHO)内部使用此函数并不会真正为您节省太多,相反,这只会造成混乱。Laravel的相似之处在于,您可以在实际执行查询之前使用在多个阶段构建查询。一旦你知道了这一点,翻译就非常简单:
public function getData($table, $multiple = 1, $field = FALSE, $val = FALSE)
{
$query = DB::table($table);
if($field){
// WHERE in case of FIELD / VAL :)
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
我不认为这是一个很好的实践,尽管在一个有说服力的模型中依靠流利的语言,但是在有些情况下这是没有帮助的。如果当前的目标是将项目转换为Laravel,那么可能有调用代码依赖于此方法存在的事实。将函数转换为使用Elount而不是Fluent将更改函数的签名,并导致代码的其他部分中断,但看起来是这样的:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
调用代码本身可以修改为在Laravel中执行完全相同的功能,如下所示:
public function getData($multiple = true, $field = false, $val = false)
{
$query = $this;
if($field) {
$query = $query->where($field, $val);
}
if($multiple) {
return $query->get();
}
return $query->first();
}
// Instead of...
$result = $model->getData(1, 'field', 'value');
// You can do this:
$result = $model->where('field', 'value')->get();
// Or this if you'd rather not have multiple:
$result = $model->where('field', 'value')->first();
从长远来看,在Eloquent(IMHO)内部使用此函数并不会真正为您节省太多,相反,这只会造成混乱。感谢您的awnser,使用generalmodel的主要原因是可以快速访问基本查询,在实际使用之前,这些查询将始终被检查/验证。只是我的一个朋友并不完全热衷于后端编程,而是需要一种快速简便的方法来调用单个表上的一些基本查询(插入、选择、计数、更新和删除)。因为我自己在调用查询之前使用了一个带有预验证的generalmodel,所以我认为他最好使用simulair。感谢您的awnser,使用generalmodel的主要原因是可以快速访问基本查询,这些查询在实际使用之前都会被检查/验证。只是我的一个朋友并不完全热衷于后端编程,而是需要一种快速简便的方法来调用单个表上的一些基本查询(插入、选择、计数、更新和删除)。因为我自己在调用查询之前使用了一个带有预验证的generalmodel,所以我认为他最好使用simulair。感谢您的awnser,使用generalmodel的主要原因是可以快速访问基本查询,这些查询在实际使用之前都会被检查/验证。只是我的一个朋友并不完全热衷于后端编程,而是需要一种快速简便的方法来调用单个表上的一些基本查询(插入、选择、计数、更新和删除)。因为我自己在调用查询之前使用了一个带有预验证的generalmodel,所以我认为他最好使用simulair。感谢您的awnser,使用generalmodel的主要原因是可以快速访问基本查询,这些查询将始终是chec