7

So I've got a couple of models which I'm setting up for use with Laravels Eloquent ORM...

The tables these models refer to are populated by a third party program, which I do not have much ability to edit, so the following annoyance I have to find a work-around for.

The users tables have string IDs, example: 1234

Some other tables (action logs for example) have a string foreign user ids, example: "1234"

As you can probably see here, the other tables add a " onto the user IDs, and as such, I can't run it straight through a laravel relationship, as "1234" ~= 1234...

So I'm trying to find out if there is some way I can run the "1234" through a trim function or similar to remove the "s before it gets used in the eloquent relationship.

And yes, I know it's silly to add ", as mentioned, it's a third party program. I'm going to try to see if they can change that functionality, but in the case they cannot, I need to find a way to work around it.

Any help would be appreciated :)

Example of the relationship code:

public function useractions(){
    return $this->hasMany('\App\UserActions','userid');
}



public function user(){
    return $this->belongsTo('\App\User','userid');
}

This is a crosspost from: https://laracasts.com/discuss/channels/eloquent/eloquent-and-trimming-relation-fields

Kieran
  • 752
  • 1
  • 10
  • 24
  • unfortunately, I don't believe it's that simple. I've edited the post with an example snippet of code for a relationship in laravel. There is no retrieval of the id column data for the relationship, only a reference to it – Kieran Feb 24 '17 at 23:31

1 Answers1

5

You can use Eloquent Raw expressions.

public function useractions(){
    return \App\UserActions::Where(DB::raw("TRIM(userid)"), $this->userid)->get();
}
Dumindu Perera
  • 1,571
  • 15
  • 13