Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
laravel 5.3关系中的问题?_Laravel_Laravel 5.3 - Fatal编程技术网

laravel 5.3关系中的问题?

laravel 5.3关系中的问题?,laravel,laravel-5.3,Laravel,Laravel 5.3,我想根据姓名或手机号在联系人表和通信链接表中搜索。其中,我的手机在“值”的通信链接表中,fname和lname在联系人表中。但是,通过使用rest\u id,在通信链路和资源\u状态中存在一种关系,并且资源\u状态与资源类型相连接 这是我的原始sql查询 SELECT contacts.fname, contacts.lname, communication_links.value FROM contacts ,communication_links,resource_status

我想根据姓名或手机号在联系人表和通信链接表中搜索。其中,我的手机在“值”的通信链接表中,fname和lname在联系人表中。但是,通过使用rest\u id,在通信链路和资源\u状态中存在一种关系,并且资源\u状态与资源类型相连接

这是我的原始sql查询

SELECT  contacts.fname, contacts.lname, communication_links.value FROM contacts ,communication_links,resource_status 
                    where 
                    (contacts.id = communication_links.cont_id)
                    AND
                    (communication_links.rest_id = resource_status.id)
                    AND
                    resource_type.status LIKE '{mobile}%' 
                    AND 
                   (communication_links.value LIKE '{$search_string}%' OR 
                    contacts.fname LIKE '{$search_string}% OR contacts.lname LIKE '{$search_string}%  )
我有以下表格结构

contacts
  id
  fname
  lname
  dob

communication_links
  id
  rest_id
  cont_id
  value

resource_type
  id
  type

resource_status
  id
  Status
  rety_id
我创建了以下模型来维持这种关系

Contact.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Contact extends Model
{
    protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function communicationLinks()
    {
        return $this->hasMany(Communication_link::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Communication_link extends Model
{
    protected $connection = 'mysql_freesubs';


    public $timestamps = false;

    public function resource()
    {
        return $this->belongsTo(Resource_status::class, 'rest_id');
    }

    public function contact()
    {
        return $this->belongsTo(Contact::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_status extends Model
{
    protected $connection = 'mysql_freesubs';
    protected $table = 'resource_status';


}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_type extends Model
{
     protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function resourceStatuses()
    {
        return $this->hasMany(Resource_status::class, 'rety_id');
    }
}
通信链接.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Contact extends Model
{
    protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function communicationLinks()
    {
        return $this->hasMany(Communication_link::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Communication_link extends Model
{
    protected $connection = 'mysql_freesubs';


    public $timestamps = false;

    public function resource()
    {
        return $this->belongsTo(Resource_status::class, 'rest_id');
    }

    public function contact()
    {
        return $this->belongsTo(Contact::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_status extends Model
{
    protected $connection = 'mysql_freesubs';
    protected $table = 'resource_status';


}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_type extends Model
{
     protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function resourceStatuses()
    {
        return $this->hasMany(Resource_status::class, 'rety_id');
    }
}
Resource\u status.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Contact extends Model
{
    protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function communicationLinks()
    {
        return $this->hasMany(Communication_link::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Communication_link extends Model
{
    protected $connection = 'mysql_freesubs';


    public $timestamps = false;

    public function resource()
    {
        return $this->belongsTo(Resource_status::class, 'rest_id');
    }

    public function contact()
    {
        return $this->belongsTo(Contact::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_status extends Model
{
    protected $connection = 'mysql_freesubs';
    protected $table = 'resource_status';


}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_type extends Model
{
     protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function resourceStatuses()
    {
        return $this->hasMany(Resource_status::class, 'rety_id');
    }
}
Resource\u type.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Contact extends Model
{
    protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function communicationLinks()
    {
        return $this->hasMany(Communication_link::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Communication_link extends Model
{
    protected $connection = 'mysql_freesubs';


    public $timestamps = false;

    public function resource()
    {
        return $this->belongsTo(Resource_status::class, 'rest_id');
    }

    public function contact()
    {
        return $this->belongsTo(Contact::class, 'cont_id');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_status extends Model
{
    protected $connection = 'mysql_freesubs';
    protected $table = 'resource_status';


}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource_type extends Model
{
     protected $connection = 'mysql_freesubs';

    public $timestamps = false;

    public function resourceStatuses()
    {
        return $this->hasMany(Resource_status::class, 'rety_id');
    }
}
我尝试编写与上面给出的相同的查询,但没有得到理想的结果:

$parent_contact = \App\Contact::with('communicationLinks.resource')
                                            ->whereHas('communicationLinks.resource', function ($query) {
                                                    $query->where('status', 'LIKE', "{mobile}%");
                                                })

                                            ->whereHas('communicationLinks.contact',function ($query) use($request) {
                                                $query->where('communicationLinks.value','LIKE',"{$request->search_string}%")
                                                      ->orWhere('fname','LIKE',"{$request->search_string}%")
                                                      ->orWhere('lname','LIKE',"{$request->search_string}%");
                                                })
                                             ->get();
这应该能帮你完成任务

您只需遍历它即可获得所需的值

这应该能帮你完成任务


您可以通过迭代来获得所需的值

您是否尝试过使用laravel fluent来查询表我的意思是使用
DB::raw
编写laravel查询,它将生成与您上面编写的sql同义的sql查询不是在laravel fluent中,而是在structural phptry out laravel fluent中使用
DB::table
我收到了这个错误“类的对象\Database\Query\Builder无法转换为字符串”抱歉,我无法在此发布查询您是否尝试过使用laravel fluent查询表我的意思是使用
DB::raw
编写laravel查询,它将生成与您上面编写的sql同义的sql查询不是在laravel fluent中,而是在structural phptry out laravel fluent中使用
DB::table
运行的,我遇到了这个错误“无法将Illumb\Database\Query\Builder类的对象转换为字符串“很抱歉,我不能在这里发布查询,但是有没有其他方法来解决这个问题,因为这个方法在处理过程中有点慢。您可能想查看您的数据库,也许添加索引会有所帮助,因为这不再是一个laravel问题。您可以安装laravel debugbar来查看查询需要多长时间。如何调试查询?哦,我知道了。抱歉,没什么。但是有没有其他方法来解决这个问题,因为这个方法在处理过程中有点慢。你可能想看看你的数据库,也许添加索引会有所帮助,因为这已经不再是laravel的事情了。您可以安装laravel debugbar来查看查询需要多长时间。如何调试查询?哦,我知道了。对不起,没什么。